home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / termv4.6 / extras / source / term-source.lha / Global.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-18  |  60.2 KB  |  2,260 lines

  1. /*
  2. **    Global.h
  3. **
  4. **    Global data structure definitions
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifndef _GLOBAL_H
  11. #define _GLOBAL_H 1
  12.  
  13.     /* The configuration file format version. This will from now
  14.      * on hopefully stay the same.
  15.      */
  16.  
  17. #define CONFIG_FILE_VERSION    4
  18. #define CONFIG_FILE_REVISION    3
  19.  
  20.     // IDCMP flags for the main window
  21.  
  22. #define DEFAULT_IDCMP        (IDCMP_RAWKEY | IDCMP_INACTIVEWINDOW | IDCMP_ACTIVEWINDOW | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_MENUPICK | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS | IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_IDCMPUPDATE | IDCMP_MENUHELP)
  23.  
  24.     /* Jump table entry. */
  25.  
  26. typedef BOOL (* JUMP)(LONG Char);
  27.  
  28.     /* Pointer to function returning nothing. */
  29.  
  30. typedef VOID (* VPTR)();
  31.  
  32.     /* Capture output routine. */
  33.  
  34. typedef VOID (* COPTR)(register APTR Data,register LONG Size);
  35.  
  36.     /* Menu item codes. */
  37.  
  38. enum    {    MEN_SAVE_AS_PICTURE=1,MEN_SAVE_AS_TEXT,MEN_PRINT_SCREEN,MEN_PRINT_CLIP,MEN_CAPTURE_TO_FILE,
  39.         MEN_CAPTURE_TO_PRINTER,MEN_ICONIFY,MEN_ABOUT,MEN_QUIT,
  40.  
  41.         MEN_COPY,MEN_PASTE,MEN_CLEAR,
  42.  
  43.         MEN_EXECUTE_DOS_COMMAND,MEN_EXECUTE_REXX_COMMAND,MEN_RECORD,MEN_RECORD_LINE,
  44.         MEN_EDIT_TRAPS,MEN_DISABLE_TRAPS,
  45.  
  46.         MEN_PHONEBOOK,MEN_REDIAL,MEN_DIAL_NUMBER,MEN_SEND_BREAK,
  47.         MEN_HANG_UP,MEN_WAIT,MEN_FLUSH_BUFFER,MEN_RELEASE_DEVICE,
  48.  
  49.         MEN_UPLOAD_ASCII,MEN_DOWNLOAD_ASCII,MEN_UPLOAD_TEXT,MEN_DOWNLOAD_TEXT,MEN_EDIT_AND_UPLOAD_TEXT,
  50.         MEN_UPLOAD_BINARY,MEN_DOWNLOAD_BINARY,
  51.  
  52.         MEN_CLEAR_BUFFER,MEN_DISPLAY_BUFFER,MEN_CLOSE_BUFFER,MEN_FREEZE_BUFFER,MEN_OPEN_BUFFER,
  53.         MEN_SAVE_BUFFER_AS,
  54.  
  55.         MEN_CLEAR_SCREEN,MEN_RESET_FONT,MEN_RESET_STYLES,MEN_RESET_TERMINAL,
  56.  
  57.         MEN_SERIAL,MEN_MODEM,MEN_SCREEN,MEN_TERMINAL,MEN_SET_EMULATION,MEN_CLIPBOARD,MEN_CAPTURE,MEN_COMMANDS,
  58.         MEN_MISC,MEN_PATH,MEN_TRANSFER_PROTOCOL,MEN_TRANSFER,MEN_TRANSLATION,MEN_MACROS,
  59.         MEN_CURSORKEYS,MEN_FAST_MACROS,MEN_HOTKEYS,MEN_SPEECH,MEN_SOUND,MEN_RATES,MEN_SET_CONSOLE,MEN_OPEN_SETTINGS,MEN_SAVE_SETTINGS,
  60.         MEN_SAVE_SETTINGS_AS,
  61.  
  62.         MEN_STATUS_WINDOW,MEN_REVIEW_WINDOW,MEN_PACKET_WINDOW,MEN_CHAT_LINE,MEN_FAST_MACROS_WINDOW,
  63.         MEN_UPLOAD_QUEUE_WINDOW,
  64.  
  65.         // Avoid recompilation
  66.  
  67.         MEN_PRINT_SCREEN_AS_GFX,
  68.         MEN_EXTRA_DIAL,
  69.         MEN_MATRIX_WINDOW,
  70.         MEN_CAPTURE_TO_RAW_FILE
  71.     };
  72.  
  73.     /* Menu item code limit, required by the quick dial menu. */
  74.  
  75. #define DIAL_MENU_LIMIT 1000
  76.  
  77.     /* How many phone book entries will be stored in
  78.      * the quick dial menu.
  79.      */
  80.  
  81. #define DIAL_MENU_MAX    50
  82.  
  83.     /* Undefine the following symbols, the preferences header file
  84.      * will use the same names and the same values.
  85.      */
  86.  
  87. #undef PARITY_NONE
  88. #undef PARITY_EVEN
  89. #undef PARITY_ODD
  90. #undef PARITY_MARK
  91. #undef PARITY_SPACE
  92.  
  93.     /* Serial settings. */
  94.  
  95. enum    {    PARITY_NONE,PARITY_EVEN,PARITY_ODD,PARITY_MARK,PARITY_SPACE };
  96.  
  97. enum    {    HANDSHAKING_NONE,HANDSHAKING_RTSCTS,HANDSHAKING_RTSCTS_DSR };
  98. enum    {    DUPLEX_FULL,DUPLEX_HALF };
  99. enum    {    FLOW_NONE,FLOW_XON_XOFF };
  100.  
  101.     /* Terminal settings. */
  102.  
  103. enum    {    EOL_IGNORE,EOL_CR,EOL_LF,EOL_CRLF,EOL_LFCR };
  104. enum    {    EMULATION_ANSIVT100,EMULATION_ATOMIC,EMULATION_TTY,EMULATION_EXTERNAL,EMULATION_HEX };
  105. enum    {    COLOUR_AMIGA,COLOUR_EIGHT,COLOUR_SIXTEEN,COLOUR_MONO };
  106.  
  107.     /* Protocol types. */
  108.  
  109. enum    {    PROTOCOL_XMODEM,PROTOCOL_XMODEMCRC,PROTOCOL_YMODEM,PROTOCOL_ZMODEM };
  110.  
  111.     /* Font types. */
  112.  
  113. enum    {    FONT_STANDARD,FONT_IBM,FONT_IBM_RAW };
  114.  
  115.     /* Bell modes. */
  116.  
  117. enum    {    BELL_NONE, BELL_VISIBLE, BELL_AUDIBLE, BELL_BOTH, BELL_SYSTEM };
  118.  
  119.     /* Data flow scanner indices. */
  120.  
  121. enum    {    SCAN_NOCARRIER, SCAN_CONNECT, SCAN_VOICE, SCAN_RING, SCAN_BUSY, SCAN_NODIALTONE,
  122.         SCAN_OK, SCAN_ERROR, SCAN_SIGDEFAULTUPLOAD, SIG_DEFAULTUPLOAD,
  123.         SCAN_SIGASCIIUPLOAD,SCAN_SIGASCIIDOWNLOAD, SCAN_SIGTEXTUPLOAD,
  124.         SCAN_SIGTEXTDOWNLOAD, SCAN_SIGBINARYUPLOAD,
  125.         SCAN_SIGBINARYDOWNLOAD, SCAN_COUNT
  126.     };
  127.  
  128.     /* Status types. */
  129.  
  130. enum    {    STATUS_READY,STATUS_HOLDING,STATUS_DIALING,STATUS_UPLOAD,
  131.         STATUS_DOWNLOAD,STATUS_BREAKING,STATUS_HANGUP,
  132.         STATUS_RECORDING,STATUS_RECORDING_LINE
  133.     };
  134.  
  135.     /* Sound types. */
  136.  
  137. enum    {    SOUND_BELL,SOUND_CONNECT,SOUND_DISCONNECT,SOUND_GOODTRANSFER,
  138.         SOUND_BADTRANSFER,SOUND_RING,SOUND_VOICE,SOUND_ERROR,
  139.         SOUND_COUNT
  140.     };
  141.  
  142.     /* Settings types. */
  143.  
  144. enum    {    PREF_ALL,PREF_SERIAL,PREF_MODEM,PREF_COMMAND,PREF_SCREEN,
  145.         PREF_TERMINAL,PREF_PATH,PREF_MISC,PREF_CLIP,PREF_CAPTURE,
  146.         PREF_FILE,PREF_EMULATION,PREF_TRANSFER,PREF_TRANSLATIONFILENAME,
  147.         PREF_MACROFILENAME,PREF_CURSORFILENAME,PREF_FASTMACROFILENAME,
  148.         PREF_SPEECHFILENAME,PREF_SOUNDFILENAME,PREF_AREACODEFILENAME,
  149.         PREF_PHONEBOOKFILENAME,PREF_HOTKEYFILENAME,PREF_TRAPFILENAME,
  150.         PREF_RATES    // Note: PREF_RATES must always be last
  151.     };
  152.  
  153.     /* Status line modes. */
  154.  
  155. enum    {    STATUSLINE_DISABLED,STATUSLINE_STANDARD,STATUSLINE_COMPRESSED };
  156.  
  157.     /* Capture filter modes. */
  158.  
  159. enum    {    FILTER_NONE,FILTER_ESCAPE,FILTER_CONTROL,FILTER_BOTH };
  160.  
  161.     /* Scrolling modes. */
  162.  
  163. enum    {    SCROLL_JUMP,SCROLL_SMOOTH };
  164.  
  165.     /* Auto-capture file creation. */
  166.  
  167. enum    {    AUTOCAPTURE_DATE_NAME,AUTOCAPTURE_DATE_INCLUDE };
  168.  
  169.     /* Cursor and numeric keypad modes. */
  170.  
  171. enum    {    KEYMODE_STANDARD,KEYMODE_APPLICATION };
  172.  
  173.     /* Font scales. */
  174.  
  175. enum    {    SCALE_NORMAL,SCALE_HALF };
  176. enum    {    SCALE_ATTR_NORMAL,SCALE_ATTR_TOP2X,SCALE_ATTR_BOT2X,SCALE_ATTR_2X };
  177.  
  178.     /* Character tables. */
  179.  
  180. enum    {    TABLE_ASCII,TABLE_GFX };
  181.  
  182.     /* Transfer types. */
  183.  
  184. enum    {    TRANSFER_BINARY,TRANSFER_TEXT,TRANSFER_ASCII };
  185.  
  186.     /* Translation table entry types. */
  187.  
  188. enum    {    TRANSLATE_SINGLE,TRANSLATE_STRING };
  189.  
  190.     /* Upload panel actions. */
  191.  
  192. enum    {    UPLOAD_TEXT=1,UPLOAD_BINARY,UPLOAD_IGNORE,UPLOAD_ABORT,
  193.         UPLOAD_TEXT_FROM_LIST,UPLOAD_BINARY_FROM_LIST,UPLOAD_DUMMY
  194.     };
  195.  
  196.     /* Alert types. */
  197.  
  198. enum    {    ALERT_NONE,ALERT_BEEP,ALERT_SCREEN,ALERT_BEEP_SCREEN };
  199.  
  200.     /* Online time display modes. */
  201.  
  202. enum    {    ONLINETIME_TIME,ONLINETIME_COST,ONLINETIME_BOTH };
  203.  
  204.     /* Clipboard read errors. */
  205.  
  206. enum    {    CLIPERR_NONE,CLIPERR_NOTEXT,CLIPERR_IFF,CLIPERR_OPEN,CLIPERR_MEM };
  207.  
  208.     /* What to print. */
  209.  
  210. enum    {    PRINT_SCREEN,PRINT_CLIP };
  211.  
  212.     /* Dial command types. */
  213.  
  214. enum    {    DIAL_IGNORE,DIAL_LIST,DIAL_REDIAL };
  215.  
  216.     /* Errors returned by ReconfigureSerial(). */
  217.  
  218. enum    {    RECONFIGURE_FAILURE,RECONFIGURE_NOCHANGE,RECONFIGURE_SUCCESS };
  219.  
  220.     /* Operation codes for SetItem(). */
  221.  
  222. enum    {    SETITEM_SETCHECK,SETITEM_CLRCHECK,SETITEM_ON,SETITEM_OFF };
  223.  
  224.     /* File identification actions. */
  225.  
  226. enum    {    IDENTIFY_IGNORE,IDENTIFY_FILETYPE,IDENTIFY_SOURCE };
  227.  
  228.     /* Generic list types. */
  229.  
  230. enum    {    GLIST_UPLOAD,GLIST_DOWNLOAD,GLIST_DIAL,GLIST_WAIT,GLIST_TRAP,GLIST_COUNT };
  231.  
  232.     /* Generic list add operations. */
  233.  
  234. enum    {    ADD_GLIST_BOTTOM,ADD_GLIST_TOP,ADD_GLIST_BEHIND,ADD_GLIST_BEFORE };
  235.  
  236.     /* Dialing modes. */
  237.  
  238. enum    {    DIALMODE_PULSE, DIALMODE_TONE, DIALMODE_MODEM, DIALMODE_ISDN };
  239.  
  240.     /* Transfer window gadgets. */
  241.  
  242. enum    {    GAD_TRANSFER_INFORMATION_LIST=1,
  243.         GAD_TRANSFER_PERCENT,GAD_TRANSFER_TIME,
  244.         GAD_TRANSFER_ABORT,GAD_TRANSFER_SKIP,
  245.         GAD_TRANSFER_PROTOCOL,GAD_TRANSFER_FILE,
  246.         GAD_TRANSFER_SIZE,GAD_TRANSFER_SECONDS,
  247.         GAD_TRANSFER_TOTALTIME,GAD_TRANSFER_ERRORS,
  248.         GAD_TRANSFER_ABORT_FILE
  249.     };
  250.  
  251.     /* How to satisfy OwnDevUnit.library requests. */
  252.  
  253. enum    {    ODU_RELEASE,ODU_WAIT,ODU_KEEP };
  254.  
  255.     /* When to notify the user during a file transfer. */
  256.  
  257. enum    {    XFERNOTIFY_NEVER,XFERNOTIFY_ALWAYS,XFERNOTIFY_START,XFERNOTIFY_END };
  258.  
  259.     /* XPR options setting. */
  260.  
  261. enum    {    GAD_XPROPTIONS_USE=42,GAD_XPROPTIONS_CANCEL };
  262.  
  263.     // Terminal types
  264.  
  265. enum    {    TERMINAL_VT200,TERMINAL_VT102,TERMINAL_VT101,TERMINAL_VT100 };
  266.  
  267.     /* AmigaGuide help context. */
  268.  
  269. enum    {    CONTEXT_MAIN,CONTEXT_SERIAL,CONTEXT_MODEM,CONTEXT_SCREEN,
  270.         CONTEXT_TERMINAL,CONTEXT_CLIP,CONTEXT_CAPTURE,CONTEXT_COMMAND,
  271.         CONTEXT_MISC,CONTEXT_PATHS,CONTEXT_TRANSLATION,CONTEXT_MACROS,
  272.         CONTEXT_CURSOR,CONTEXT_FASTMACROS,CONTEXT_HOTKEYS,CONTEXT_SPEECH,
  273.         CONTEXT_EMULATION,CONTEXT_TRANSFER,CONTEXT_PHONEBOOK,CONTEXT_DATE,
  274.         CONTEXT_DAY,CONTEXT_IMPORT,CONTEXT_RATES,CONTEXT_TIME,
  275.         CONTEXT_COPY,CONTEXT_PASSWORDUSER,CONTEXT_DIAL,CONTEXT_PRINT,
  276.         CONTEXT_TEXTBUFFER,CONTEXT_PACKETWINDOW,CONTEXT_SOUND,
  277.         CONTEXT_LIBS,CONTEXT_ASCII,CONTEXT_PENS,CONTEXT_UPLOAD_QUEUE,
  278.         CONTEXT_TRAPS,CONTEXT_AREA_CODES,CONTEXT_MAIN_MENU,
  279.         CONTEXT_BUFFER_MENU,CONTEXT_PACKET_MENU,CONTEXT_PROJECT_MEN,
  280.         CONTEXT_EDIT_MEN,CONTEXT_CMDS_MEN,CONTEXT_PHONE_MEN,
  281.         CONTEXT_TRANSF_MEN,CONTEXT_BUFFER_MEN,CONTEXT_TERMINAL_MEN,
  282.         CONTEXT_SETTINGS_MEN,CONTEXT_WINDOWS_MEN,CONTEXT_DIAL_MEN,
  283.         CONTEXT_TEXTPEN_PANEL,CONTEXT_ASCII_TRANSFER_SETTINGS,
  284.         CONTEXT_PARAMETERS,CONTEXT_SIGNATURE
  285.  
  286.     };
  287.  
  288.     /* Character types. */
  289.  
  290. enum    {    CHAR_VANILLA,CHAR_CURSOR,CHAR_FUNCTION,CHAR_HELP,
  291.         CHAR_XON,CHAR_XOFF,CHAR_ENTER,CHAR_RETURN };
  292.  
  293.     /* Review window positioning codes. */
  294.  
  295. enum    {    REVIEW_MOVE_TOP,REVIEW_MOVE_BOTTOM,REVIEW_MOVE_UP,REVIEW_MOVE_DOWN };
  296.  
  297.     /* File type classes. */
  298.  
  299. enum    {    FILETYPE_NONE,FILETYPE_DIR,FILETYPE_FILE,FILETYPE_TEXT,FILETYPE_SOUND,
  300.         FILETYPE_PICTURE,FILETYPE_PREFS,FILETYPE_ARCHIVE,
  301.         FILETYPE_PROGRAM,
  302.  
  303.         FILETYPE_COUNT };
  304.  
  305.     /* Text pacing modes. */
  306.  
  307. enum    {    PACE_DIRECT,PACE_ECHO,PACE_ANYECHO,PACE_PROMPT,PACE_DELAY,PACE_KEYBOARD };
  308.  
  309.     /* Where to open the buffer text window. */
  310.  
  311. enum    {    BUFFER_TOP,BUFFER_END };
  312.  
  313.     /* Where to place the buffer screen horizontally. */
  314.  
  315. enum    {    SCREEN_LEFT,SCREEN_CENTRE,SCREEN_RIGHT };
  316.  
  317.     /* File transfer mode. */
  318.  
  319. enum    {    XFER_XPR,XFER_EXTERNALPROGRAM,XFER_DEFAULT,XFER_INTERNAL };
  320.  
  321.     /* File transfer protocol signatures. */
  322.  
  323. enum    {    TRANSFERSIG_DEFAULTUPLOAD,TRANSFERSIG_DEFAULTDOWNLOAD,
  324.         TRANSFERSIG_ASCIIUPLOAD,TRANSFERSIG_ASCIIDOWNLOAD,
  325.         TRANSFERSIG_TEXTUPLOAD,TRANSFERSIG_TEXTDOWNLOAD,
  326.         TRANSFERSIG_BINARYUPLOAD,TRANSFERSIG_BINARYDOWNLOAD
  327.     };
  328.  
  329.     /* Requester modes. */
  330.  
  331. enum    {    REQUESTERMODE_CENTRE,REQUESTERMODE_PREFS,
  332.         REQUESTERMODE_IGNORE
  333.     };
  334.  
  335.     /* Buffer capture modes. */
  336.  
  337. enum    {    BUFFERMODE_FLOW, BUFFERMODE_REVIEW };
  338.  
  339.     /* How to sort the phonebook. */
  340.  
  341. enum    {    SORT_NAME,SORT_NUMBER,SORT_COMMENT,SORT_SELECTION };
  342.  
  343.     /* Some raw key codes. */
  344.  
  345. #define HELP_CODE        95
  346. #define DEL_CODE        70
  347. #define BACKSPACE_CODE        65
  348. #define RAMIGA_CODE        103
  349. #define TAB_CODE        66
  350.  
  351. #define CURSOR_UP_CODE        76
  352. #define CURSOR_DOWN_CODE    77
  353. #define CURSOR_RIGHT_CODE    78
  354. #define CURSOR_LEFT_CODE    79
  355.  
  356. #define F01_CODE        80
  357. #define F02_CODE        81
  358. #define F03_CODE        82
  359. #define F04_CODE        83
  360. #define F05_CODE        84
  361. #define F06_CODE        85
  362. #define F07_CODE        86
  363. #define F08_CODE        87
  364. #define F09_CODE        88
  365. #define F10_CODE        89
  366.  
  367.     /* A couple of useful minterms. */
  368.  
  369. #define MINTERM_ZERO        0
  370. #define MINTERM_ONE        ABC | ABNC | ANBC | ANBNC | NABC | NABNC | NANBC | NANBNC
  371. #define MINTERM_COPY        ABC | ABNC | NABC | NABNC
  372. #define MINTERM_NOT_C        ABNC | ANBNC | NABNC | NANBNC
  373. #define MINTERM_B_AND_C        ABC | NABC
  374. #define MINTERM_NOT_B_AND_C    ANBC | NANBC
  375. #define MINTERM_B_OR_C        ABC | ABNC | NABC | NABNC | ANBC | NANBC
  376.  
  377.     /* Printer control bits. */
  378.  
  379. #define PRINT_SERIAL    (1L << 0)
  380. #define PRINT_MODEM    (1L << 1)
  381. #define PRINT_SCREEN    (1L << 2)
  382. #define PRINT_TERMINAL    (1L << 3)
  383. #define PRINT_USERNAME    (1L << 4)
  384. #define PRINT_COMMENT    (1L << 5)
  385. #define PRINT_SIZE    (1L << 6)
  386. #define PRINT_DATE    (1L << 7)
  387. #define PRINT_BITS    (1L << 8)
  388.  
  389.     /* Day of week flags. */
  390.  
  391. #define DAY_MONDAY    (1L << 0)
  392. #define DAY_TUESDAY    (1L << 1)
  393. #define DAY_WEDNESDAY    (1L << 2)
  394. #define DAY_THURSDAY    (1L << 3)
  395. #define DAY_FRIDAY    (1L << 4)
  396. #define DAY_SATURDAY    (1L << 5)
  397. #define DAY_SUNDAY    (1L << 6)
  398.  
  399.     /* These signal masks will make life a bit easier. */
  400.  
  401. #define SIG_WINDOW    (1L << Window -> UserPort -> mp_SigBit)
  402. #define SIG_SERIAL    (ReadPort ? 1L << ReadPort -> mp_SigBit : NULL)
  403. #define SIG_TIMER    (1L << TimePort -> mp_SigBit)
  404. #define SIG_QUEUE    (SpecialQueue -> SigMask)
  405. #define SIG_CHECK    (1L << CheckBit)
  406. #define SIG_WORKBENCH    (1L << WorkbenchPort -> mp_SigBit)
  407. #define SIG_REXX    (1L << TermRexxPort -> mp_SigBit)
  408.  
  409.     /* Task termination and handshake signal. Note: don't try this at
  410.      * home kids, we are all trained professionals here!
  411.      */
  412.  
  413. #define SIG_KILL    SIGBREAKF_CTRL_C
  414. #define SIG_HANDSHAKE    SIGF_SINGLE
  415.  
  416.     /* Double-buffered file server command. */
  417.  
  418. #define    SIG_COMMAND    SIGBREAKF_CTRL_D
  419.  
  420.     /* ARexx break signal. */
  421.  
  422. #define SIG_BREAK    SIGBREAKF_CTRL_D
  423.  
  424.     /* Hotkey reset command. */
  425.  
  426. #define SIG_RESET    SIGBREAKF_CTRL_D
  427.  
  428.     /* Skip dial entry. */
  429.  
  430. #define SIG_SKIP    SIGBREAKF_CTRL_D
  431.  
  432.     /* Status commands. */
  433.  
  434. #define SIG_BELL    SIGBREAKF_CTRL_D
  435. #define SIG_RESETTIME    SIGBREAKF_CTRL_E
  436.  
  437.     /* Buffer special signals. */
  438.  
  439. #define SIG_TOFRONT    SIGBREAKF_CTRL_D
  440. #define SIG_UPDATE    SIGBREAKF_CTRL_E
  441. #define SIG_MOVEUP    SIGBREAKF_CTRL_F
  442.  
  443.     /* Status display task. */
  444.  
  445. #define SIG_CLOSEWINDOW    SIGBREAKF_CTRL_F
  446.  
  447.     /* Upload queue. */
  448.  
  449. #define SIG_SHOW    SIGBREAKF_CTRL_D
  450. #define SIG_HIDE    SIGBREAKF_CTRL_E
  451. #define SIG_GOAWAY    SIGBREAKF_CTRL_F
  452.  
  453.     /* A port signal mask. */
  454.  
  455. #define PORTMASK(P)    (1L << (((struct MsgPort *)(P)) -> mp_SigBit))
  456.  
  457.     /* Replacements for CheckItem() and OnMenu()/OffMenu(). */
  458.  
  459. #define CheckItem(ID,Mode)    SetItem(ID,Mode ? SETITEM_SETCHECK : SETITEM_CLRCHECK)
  460. #define OnItem(ID)        SetItem(ID,SETITEM_ON)
  461. #define OffItem(ID)        SetItem(ID,SETITEM_OFF)
  462.  
  463.     /* A handy signal macro. */
  464.  
  465. #define ClrSignal(Signals)    SetSignal(0,Signals)
  466.  
  467.     /* Another neat macro. */
  468.  
  469. #define NumElements(s)        (sizeof(s) / sizeof((s)[0]))
  470.  
  471.     /* Definitions to access the line signal setting functions supported by
  472.      * some IO serial boards (namely the ASDG board).
  473.      */
  474.  
  475. #define SIOCMD_SETCTRLLINES    (CMD_NONSTD + 7)
  476. #define SIOB_RTSB        0
  477. #define SIOB_DTRB        1
  478. #define SIOB_RTSF        (1L << SIOB_RTSB)
  479. #define SIOB_DTRF        (1L << SIOB_DTRB)
  480.  
  481.     /* Turn time of day into `compressed' format. */
  482.  
  483. #define DT_GET_TIME(Hour,Minute) ((Minute) / 10 + (Hour) * 6)
  484.  
  485.     /* Vector offsets for the TimeDate structure. */
  486.  
  487. enum    { DT_FIRST_UNIT,DT_NEXT_UNIT };
  488.  
  489.     /* Multiply lines and columns with the current font size. */
  490.  
  491. #define MUL_X(x)        OffsetXTable[x]
  492. #define MUL_Y(y)        OffsetYTable[y]
  493.  
  494.     /* A handy and short alias. */
  495.  
  496. #define TICK            (CHECKIT | MENUTOGGLE)
  497.  
  498.     /* For now the maximum length of a path/file name. */
  499.  
  500. #define MAX_FILENAME_LENGTH    256
  501.  
  502.     /* The maximum width of a line to be stored in the text buffer. */
  503.  
  504. #define BUFFER_LINE_MAX        255
  505.  
  506.     /* User interface definitions. */
  507.  
  508. #define SZ_AutoWidth    TAG_USER+2    /* Use default width? */
  509. #define SZ_NewColumn    TAG_USER+4    /* Start new column */
  510. #define SZ_Lines    TAG_USER+5    /* Number of lines in object */
  511.  
  512.     /* Box information types. */
  513.  
  514. enum    {    BOX_LEFT,BOX_TOP,BOX_WIDTH,BOX_HEIGHT };
  515.  
  516.     /* Status gadget properties. */
  517.  
  518. #define SGA_FullWidth    (TAG_USER+42)
  519. #define SGA_Mode    (TAG_USER+43)
  520.  
  521.     /* Sizing gadget sizes. */
  522.  
  523. #define SIZE_GADGET_WIDTH_HIGH    18
  524. #define SIZE_GADGET_WIDTH_LOW    13
  525.  
  526.     /* Some windows to be opened on the main screen. */
  527.  
  528. enum    {    WINDOW_PACKET,WINDOW_STATUS,WINDOW_FILE,
  529.         WINDOW_REVIEW,WINDOW_FAST,WINDOW_FONT,
  530.         WINDOW_SCREEN,WINDOW_PERF,WINDOW_MAIN,
  531.  
  532.         WINDOW_COUNT };
  533.  
  534.     /* Window alignment information. */
  535.  
  536. #define WC_ALIGNLEFT    (1<<0)
  537. #define WC_ALIGNRIGHT    (1<<1)
  538. #define WC_ALIGNTOP    (1<<2)
  539. #define WC_ALIGNBOTTOM    (1<<3)
  540. #define WC_EXPANDWIDTH    (1<<4)
  541. #define WC_EXPANDHEIGHT    (1<<5)
  542. #define WC_ALIGNSIDE    (1<<6)
  543. #define WC_ALIGNBELOW    (1<<7)
  544.  
  545.     /* The chat line gadget ID. */
  546.  
  547. #define CHAT_ID        744
  548.  
  549.     /* Screen mode list entry. */
  550.  
  551. struct ModeNode
  552. {
  553.     struct Node    VanillaNode;
  554.     ULONG        DisplayID;
  555. };
  556.  
  557.     /* Trap management. */
  558.  
  559. struct TrapNode
  560. {
  561.     struct Node    Node;
  562.     LONG        Count,
  563.             SequenceLen;
  564.     STRPTR        Sequence,
  565.             Command;
  566. };
  567.  
  568.     /* Trap preferences, not much. */
  569.  
  570. struct TrapSettings
  571. {
  572.     BOOLEAN        Enabled;
  573.     BOOLEAN        Filter;
  574. };
  575.  
  576.     /* Window alignment data. */
  577.  
  578. struct WindowInfo
  579. {
  580.     UWORD    ID;
  581.     UWORD    WindowFlags;
  582.  
  583.     LONG    Left,
  584.         Top,
  585.         Width,
  586.         Height;
  587. };
  588.  
  589.     /* Special character treatment. */
  590.  
  591. struct SpecialKey
  592. {
  593.     UBYTE    Key;
  594.     JUMP    Routine;
  595. };
  596.  
  597.     /* Cursor backup data. */
  598.  
  599. struct CursorData
  600. {
  601.     struct TextFont        *CurrentFont;
  602.     WORD             CursorX,
  603.                  CursorY;
  604.     UBYTE             Charset;
  605.     UBYTE             CharMode[2];
  606.     UBYTE             Attributes;
  607.     UBYTE             FgPen,
  608.                  BgPen;
  609.     UBYTE             Style;
  610. };
  611.  
  612.     /* File transfer information. */
  613.  
  614. struct FileTransferNode
  615. {
  616.     struct MinNode         Node;
  617.     ULONG             Size;
  618.     STRPTR             Name;
  619. };
  620.  
  621. struct FileTransferInfo
  622. {
  623.     struct MinList         FileList;
  624.     ULONG             TotalSize;
  625.     LONG             TotalFiles;
  626.  
  627.     ULONG             DoneSize;
  628.     LONG             DoneFiles;
  629.  
  630.     struct FileTransferNode    *CurrentFile;
  631.     ULONG             CurrentSize;
  632. };
  633.  
  634.     /* Global data link. */
  635.  
  636. struct TermPort
  637. {
  638.     struct MsgPort         ExecNode;
  639.  
  640.     struct Window        *TopWindow;
  641.  
  642.     struct SignalSemaphore     OpenSemaphore;
  643.  
  644.     LONG             ID,OpenCount,HoldIt;
  645.     LONG             Reserved[5];
  646. };
  647.  
  648.     /* Buffer search support. */
  649.  
  650. struct SearchInfo
  651. {
  652.     UBYTE    Distance[256],
  653.         Pattern[256];
  654.     LONG    FoundX,
  655.         FoundY;
  656.     WORD    PatternWidth;
  657.     WORD    Index;
  658.     BOOLEAN    Forward,
  659.         IgnoreCase,
  660.         WholeWords;
  661. };
  662.  
  663. struct SearchContext
  664. {
  665.     struct Window        *SearchWindow;
  666.     struct LayoutHandle    *SearchHandle;
  667.  
  668.     UBYTE             LocalBuffer[256];
  669.     STRPTR             Buffer;
  670.  
  671.     BOOLEAN             Ok;
  672. };
  673.  
  674.     /* Support for optimized scrolling routines. */
  675.  
  676. struct ScrollLineInfo
  677. {
  678.     UWORD             Left,Right,Width,
  679.                  ColourMask;
  680. };
  681.  
  682.     /* A dial list entry. */
  683.  
  684. struct PhoneNode
  685. {
  686.     struct Node         VanillaNode;
  687.  
  688.     UBYTE             LocalName[50];
  689.  
  690.     struct PhoneEntry    *Entry;
  691. };
  692.  
  693.     /* A Fast! macro list entry. */
  694.  
  695. struct MacroNode
  696. {
  697.     struct MacroNode    *mn_Succ;    /* Modeled after the default Node. */
  698.     struct MacroNode    *mn_Pred;
  699.  
  700.     WORD             mn_Pad;    /* Included only for Node compatibility. */
  701.  
  702.     UBYTE            *mn_Macro;    /* = ln_Name, title */
  703.     UBYTE            *mn_Code;    /* The execution code. */
  704. };
  705.  
  706.     /* Speech preferences. */
  707.  
  708. struct SpeechConfig
  709. {
  710.     WORD            Rate,
  711.                 Pitch;
  712.     LONG            Frequency;
  713.     BOOLEAN            Sex,
  714.                 Volume,
  715.                 Enabled;
  716.     BYTE            Pad;
  717. };
  718.  
  719.     /* Sound preferences */
  720.  
  721. struct SoundConfig
  722. {
  723.     UBYTE            BellFile[MAX_FILENAME_LENGTH],
  724.  
  725.                 ConnectFile[MAX_FILENAME_LENGTH],
  726.                 DisconnectFile[MAX_FILENAME_LENGTH],
  727.  
  728.                 GoodTransferFile[MAX_FILENAME_LENGTH],
  729.                 BadTransferFile[MAX_FILENAME_LENGTH],
  730.  
  731.                 RingFile[MAX_FILENAME_LENGTH],
  732.                 VoiceFile[MAX_FILENAME_LENGTH];
  733.  
  734.     BOOLEAN            Preload;
  735.     BYTE            Pad;
  736.     BOOLEAN            Volume;
  737.     BYTE            Pad2;
  738.  
  739.     UBYTE            ErrorNotifyFile[MAX_FILENAME_LENGTH];
  740. };
  741.  
  742.     /* Macro Preferences. */
  743.  
  744. struct MacroKeys
  745. {
  746.     UBYTE            Keys[4][10][256];
  747. };
  748.  
  749.     /* Cursor key preferences. */
  750.  
  751. struct CursorKeys
  752. {
  753.     UBYTE            Keys[4][4][256];
  754. };
  755.  
  756.     /* Translation table entry. */
  757.  
  758. struct TranslationEntry
  759. {
  760.     STRPTR            String;        /* Corresponding code string. */
  761.     UBYTE            Type;        /* Table entry type. */
  762.     UBYTE            Len;        /* String length if any. */
  763.     UBYTE            Extra;        /* Saves space, don't need to allocate memory for this one. */
  764.     UBYTE            Null;        /* Terminating null. */
  765. };
  766.  
  767. struct TranslationHeader
  768. {
  769.     UBYTE            Type;        /* Table entry type. */
  770.     UBYTE            Code;        /* Table offset. */
  771.     UBYTE            Len;        /* Entry length. */
  772.     BYTE            Pad;
  773. };
  774.  
  775.     /* Buffer translation handle. */
  776.  
  777. struct TranslationHandle
  778. {
  779.     STRPTR            LocalBuffer;
  780.     LONG            LocalLen;
  781.  
  782.     STRPTR            SourceBuffer;
  783.     LONG            SourceLen;
  784.  
  785.     STRPTR            DestinationBuffer;
  786.     LONG            DestinationLen;
  787.  
  788.     struct TranslationEntry    **Table;
  789. };
  790.  
  791.     /* term hotkey configuration. */
  792.  
  793. struct HotkeysOld
  794. {
  795.     UBYTE            termScreenToFront[256];
  796.     UBYTE            BufferScreenToFront[256];
  797.     UBYTE            SkipDialEntry[256];
  798.     BOOLEAN            CommodityPriority;
  799.     BOOLEAN            HotkeysEnabled;
  800.  
  801.     ULONG            Reserved[25];
  802. };
  803.  
  804. struct Hotkeys
  805. {
  806.     UBYTE            termScreenToFront[256];
  807.     UBYTE            BufferScreenToFront[256];
  808.     UBYTE            SkipDialEntry[256];
  809.     BOOLEAN            CommodityPriority;
  810.     BOOLEAN            HotkeysEnabled;
  811.  
  812.     ULONG            Reserved[25];
  813.  
  814.     UBYTE            AbortARexx[256];
  815. };
  816.  
  817.     /* Time/date structure. */
  818.  
  819. struct TimeDate
  820. {
  821.     LONG             Count;        /* Table size. */
  822.  
  823.     ULONG             PayPerUnit[2];    /* Pay for each unit; stored as ten thousands */
  824.     ULONG             SecPerUnit[2];    /* Number of seconds each unit lasts; stored as ten thousands */
  825.  
  826.     UBYTE             Time;        /* The time associated with this entry. */
  827.     BOOLEAN             Mark;        /* Used by the rates editor to keep track of item being edited. */
  828. };
  829.  
  830. struct TimeDateOld
  831. {
  832.     LONG             Count;        /* Table size. */
  833.     WORD             PayPerUnit[2],    /* Pay for each unit. */
  834.                  SecPerUnit[2];    /* Number of seconds each unit lasts. */
  835.     UBYTE             Time;        /* The time associated with this entry. */
  836.     BYTE             Pad;
  837. };
  838.  
  839.     /* Time date header information. */
  840.  
  841. struct TimeDateHeader
  842. {
  843.     UBYTE             Comment[22];    /* Comment for this entry. */
  844.  
  845.     BOOLEAN             Month,        /* Month of year or -1 -> Day = bitmapped days of week. */
  846.                  Day;        /* Day of month or -1 -> standard settings. */
  847. };
  848.  
  849. struct TimeDateNode
  850. {
  851.     struct Node         VanillaNode;    /* Default node entry. */
  852.     UBYTE             Buffer[30];    /* Name buffer. */
  853.  
  854.     struct TimeDate        *Table;        /* Table of time/date entries. */
  855.  
  856.     struct TimeDateHeader     Header;    /* Header information. */
  857. };
  858.  
  859. struct TimeNode
  860. {
  861.     struct Node         VanillaNode;    /* Default node entry. */
  862.     UBYTE             Name[20];    /* Name string. */
  863.     UBYTE             Time;        /* The time for this entry. */
  864. };
  865.  
  866.     /* This node type links phone number patterns
  867.      * and date/time lists.
  868.      */
  869.  
  870. struct PatternNode
  871. {
  872.     struct Node        Node;
  873.     UBYTE            Pattern[256],
  874.                 Comment[40];
  875.     struct List        List;
  876. };
  877.  
  878.     /* Serial settings. */
  879.  
  880. struct SerialSettings
  881. {
  882.     ULONG    BaudRate;        /* Baud rate. */
  883.     ULONG    BreakLength;        /* Length of break signal in microseconds. */
  884.     ULONG    SerialBufferSize;    /* Size of serial read/write buffer. */
  885.  
  886.     UBYTE    SerialDevice[MAX_FILENAME_LENGTH];
  887.                     /* Serial device name. */
  888.     LONG    UnitNumber;        /* Serial device unit number. */
  889.  
  890.     BOOLEAN    BitsPerChar;        /* Bits per character. */
  891.     BOOLEAN    Parity;            /* Parity check mode. */
  892.     BOOLEAN    StopBits;        /* Number of stop bits. */
  893.     BOOLEAN    HandshakingProtocol;    /* Handshaking protocol (RTS/CTS, etc.). */
  894.     BOOLEAN    Duplex;            /* Full- or half-duplex? */
  895.  
  896.     BOOLEAN    xONxOFF;        /* xON/xOFF handshaking enabled? */
  897.     BOOLEAN    HighSpeed;        /* Radboogie? */
  898.     BOOLEAN    Shared;            /* Shared device access? */
  899.     BOOLEAN    StripBit8;        /* Strip high-order bit? */
  900.     BOOLEAN    CheckCarrier;        /* Track the carrier signal? */
  901.     BOOLEAN    PassThrough;        /* Pass xON/xOFF characters through to modem? */
  902.     BOOLEAN    UseOwnDevUnit;        /* Enable OwnDevUnit.library? */
  903.  
  904.     ULONG    Quantum;        /* Buffer read quantum. */
  905.  
  906.     BOOLEAN    IgnoreCarrier;        /* Ignore carrier signal. */
  907.  
  908.     BOOLEAN    UseNet;            /* Use DNet-ID. */
  909.     UWORD    NetID;            /* The DNet-ID to use. */
  910.  
  911.     BOOLEAN    SatisfyODURequests;    /* How to satisfy ODU requests. */
  912.     BOOLEAN    DirectConnection;    /* Directly connected to host? */
  913.  
  914.     UWORD    LastVersionSaved,    /* The last version the config file was saved with. */
  915.         LastRevisionSaved;
  916.  
  917.     BOOLEAN    ReleaseODUWhenOnline;    /* Release the device even when online? */
  918.     BOOLEAN    ReleaseODUWhenDialing;    /* Release the device even when dialing? */
  919.     BOOLEAN    NoODUIfShared;        /* Don't use ODU when device is opened in shared mode? */
  920.     BYTE    Pad;
  921. };
  922.  
  923.     /* Modem settings. */
  924.  
  925. struct ModemSettings
  926. {
  927.     UBYTE    ModemInit[80];        /* Modem init string. */
  928.     UBYTE     ModemExit[80];        /* Modem exit string. */
  929.     UBYTE     ModemHangup[80];    /* Modem hangup string. */
  930.     UBYTE    DialPrefix[80];        /* Dial command prefix. */
  931.     UBYTE    DialSuffix[80];        /* Dial command suffix. */
  932.  
  933.     UBYTE    NoCarrier[16];        /* `No carrier' string. */
  934.     UBYTE    NoDialTone[16];        /* `No dialtone' string. */
  935.     UBYTE    Connect[16];        /* `Connect' string. */
  936.     UBYTE    Voice[16];        /* `Voice' string. */
  937.     UBYTE    Ring[16];        /* `Ring' string. */
  938.     UBYTE    Busy[16];        /* `Busy' string. */
  939.  
  940.     LONG    RedialDelay;        /* Length of redial delay. */
  941.     LONG    DialRetries;        /* Number of dial retries. */
  942.     LONG    DialTimeout;        /* Length of dial timeout. */
  943.     BOOLEAN    ConnectAutoBaud;    /* Use baud rate returned by modem? */
  944.     BOOLEAN    DropDTR;        /* Drop the DTR signal on hangup? */
  945.     BOOLEAN    RedialAfterHangup;    /* Redial list after hangup? */
  946.     BOOLEAN    VerboseDialing;        /* Output modem responses while dialing? */
  947.  
  948.     UBYTE    Ok[16];            /* `Ok' string. */
  949.     UBYTE    Error[16];        /* `Error' string. */
  950.  
  951.     BOOLEAN    NoCarrierIsBusy;    /* Treat `NO CARRIER' as `BUSY' signal? */
  952.     BOOLEAN    AbortHangsUp;        /* Dialer `Abort' sends hangup string? */
  953.  
  954.     WORD    ConnectLimit;                /* Connection limit. */
  955.     UBYTE    ConnectLimitMacro[MAX_FILENAME_LENGTH];    /* Macro to be executed when limit is reached. */
  956.  
  957.     LONG    TimeToConnect;        /* Number of seconds to pass between modem picking up
  958.                      * the line and issuing the `CONNECT' message.
  959.                      */
  960.  
  961.     BOOLEAN    DialMode;        /* Use tone or pulse dialing? */
  962.     BOOLEAN    DoNotSendMainModemCommands;    /* Do not send modem init/exit commands when dialing and using the main configuration? */
  963.  
  964.     LONG    InterDialDelay;        /* Seconds to wait between two successive dial attempts. */
  965.  
  966.     LONG    CharSendDelay;        /* Microseconds to wait between chars to send. */
  967.  
  968.     UBYTE    PBX_Prefix[80];        /* Additional commands to insert between dial prefix and phone number. */
  969.     BOOLEAN    PBX_Mode;        /* Send the prefix above. */
  970.     BYTE    Pad;
  971. };
  972.  
  973.     /* Command settings. */
  974.  
  975. struct CommandSettings
  976. {
  977.     UBYTE    StartupMacro[256];    /* Startup macro. */
  978.     UBYTE    LogoffMacro[256];    /* Macro executed after carrier has dropped or hung up. */
  979.     UBYTE    UploadMacro[256];    /* Macro to execute after a successful upload. */
  980.     UBYTE    DownloadMacro[256];    /* Macro to execute after a successful download. */
  981.  
  982.     UBYTE    LoginMacro[256];    /* Login macro, complements the logoff macro. */
  983. };
  984.  
  985.     /* Screen settings. */
  986.  
  987. struct ScreenSettings
  988. {
  989.     ULONG    DisplayMode;            /* Screen display mode. */
  990.     WORD    ColourMode;            /* The terminal colour mode. */
  991.     UWORD    Colours[16];            /* Colour palette. */
  992.     UBYTE    FontName[MAX_FILENAME_LENGTH];    /* Default user interface font. */
  993.     WORD    FontHeight;            /* Default user interface font height. */
  994.  
  995.     BOOLEAN    MakeScreenPublic;        /* Are we to make our screen public? */
  996.     BOOLEAN    ShanghaiWindows;        /* Are we to `shanghai' windows? */
  997.  
  998.     BOOLEAN    Blinking;            /* Screen blinking enabled? */
  999.     BOOLEAN    FasterLayout;            /* Faster screen layout? */
  1000.     BOOLEAN    TitleBar;            /* Is the screen title bar enabled? */
  1001.     BOOLEAN    StatusLine;            /* Which mode is the status line in? */
  1002.  
  1003.     BOOLEAN    UseWorkbench;            /* Use the Workbench screen for the terminal window? */
  1004.  
  1005.     UBYTE    PubScreenName[MAXPUBSCREENNAME + 1];    /* Name of public screen to open window upon. */
  1006.  
  1007.     BOOLEAN    TimeMode;            /* Online time/fee display. */
  1008.     BOOLEAN    Depth;                /* Screen depth if any, 0 = don't bother. */
  1009.  
  1010.     BOOLEAN    UsePens;            /* Use special screen pens? */
  1011.     BYTE    PenColourMode;            /* For which colour mode was the pen array built? */
  1012.  
  1013.     UWORD    PenArray[16];            /* Pen index array. */
  1014.  
  1015.     ULONG    DisplayWidth,            /* Screen width. */
  1016.         DisplayHeight;            /* Screen height. */
  1017.     UWORD    OverscanType;            /* Screen overscan type. */
  1018.  
  1019.     BOOLEAN    ShareScreen;            /* Don't open a backdrop window, share pens. */
  1020.     BOOLEAN    SplitStatus;            /* Split the status line from the main window. */
  1021.  
  1022.     BYTE    Pad;
  1023.     BOOLEAN    UseColours96;            /* Use the 96 bit colours? */
  1024.     ULONG    Colours96[16 * 3];        /* The 96 bit colour table. */
  1025. };
  1026.  
  1027.     /* Terminal settings. */
  1028.  
  1029. struct TerminalSettings
  1030. {
  1031.     BOOLEAN    BellMode;                /* The bell mode. */
  1032.     BOOLEAN    AlertMode;                /* The user alert mode. */
  1033.     BOOLEAN    EmulationMode;                /* The terminal emulation mode. */
  1034.     BOOLEAN    FontMode;                /* The font mode. */
  1035.  
  1036.     BOOLEAN    SendCR;                    /* Standard translations. */
  1037.     BOOLEAN    SendLF;
  1038.     BOOLEAN    ReceiveCR;
  1039.     BOOLEAN    ReceiveLF;
  1040.  
  1041.     UWORD    NumColumns,                /* Size of the terminal window. */
  1042.         NumLines;
  1043.  
  1044.     UBYTE    KeyMapFileName[MAX_FILENAME_LENGTH];    /* Name of custom keymap file. */
  1045.     UBYTE    EmulationFileName[MAX_FILENAME_LENGTH];    /* External emulation file name. */
  1046.     UBYTE    BeepFileName[MAX_FILENAME_LENGTH];    /* Name of the custom beep sound file. */
  1047.  
  1048.     UBYTE    TextFontName[MAX_FILENAME_LENGTH];    /* Terminal text font name. */
  1049.     WORD    TextFontHeight;                /* Terminal text font height. */
  1050.  
  1051.     BOOLEAN    UseTerminalTask;            /* Enable the terminal emulation process. */
  1052.     BOOLEAN    AutoSize;                /* Terminal size should be auto adapted. */
  1053.  
  1054.     UBYTE    IBMFontName[MAX_FILENAME_LENGTH];    /* Terminal text font name. */
  1055.     WORD    IBMFontHeight;                /* Terminal text font height. */
  1056. };
  1057.  
  1058.     /* Path settings. */
  1059.  
  1060. struct PathSettings
  1061. {
  1062.     UBYTE    ASCIIUploadPath[MAX_FILENAME_LENGTH];        /* Default ASCII upload file path. */
  1063.     UBYTE    ASCIIDownloadPath[MAX_FILENAME_LENGTH];        /* Default ASCII download file path. */
  1064.  
  1065.     UBYTE    TextUploadPath[MAX_FILENAME_LENGTH];        /* Default text upload file path. */
  1066.     UBYTE    TextDownloadPath[MAX_FILENAME_LENGTH];        /* Default text download file path. */
  1067.  
  1068.     UBYTE    BinaryUploadPath[MAX_FILENAME_LENGTH];        /* Default binary data upload file path. */
  1069.     UBYTE    BinaryDownloadPath[MAX_FILENAME_LENGTH];    /* Default binary data download file path. */
  1070.  
  1071.     UBYTE    DefaultStorage[MAX_FILENAME_LENGTH];        /* Default configuration storage path. */
  1072.  
  1073.     UBYTE    Editor[MAX_FILENAME_LENGTH];            /* Text file editor to use. */
  1074.  
  1075.     UBYTE    HelpFile[MAX_FILENAME_LENGTH];            /* Help text file. */
  1076. };
  1077.  
  1078.     /* Miscellaneous settings. */
  1079.  
  1080. struct MiscSettings
  1081. {
  1082.     BOOLEAN    Priority;        /* Program priority. */
  1083.     BOOLEAN    BackupConfig;        /* Save the configuration between calls? */
  1084.  
  1085.     BOOLEAN    OpenFastMacroPanel;    /* Open the fast! macro panel? */
  1086.     BOOLEAN    ReleaseDevice;        /* Release serial device when iconified? */
  1087.  
  1088.     BOOLEAN    TransferServer;        /* Enable data transfer server? */
  1089.     BOOLEAN    EmulationServer;    /* Enable terminal emulation server? */
  1090.  
  1091.     BOOLEAN    OverridePath;        /* Override the protocol transfer path? */
  1092.     BOOLEAN    AutoUpload;        /* Enable the auto-upload panel? */
  1093.     BOOLEAN    SetArchivedBit;        /* Set the archived bit for files sent? */
  1094.     BOOLEAN    IdentifyFiles;        /* Try to identify files after download? */
  1095.  
  1096.     BOOLEAN    TransferIcons;        /* Transfer files along with their icons? */
  1097.     BOOLEAN    CreateIcons;        /* Create icons for files saved? */
  1098.  
  1099.     BOOLEAN    SimpleIO;        /* Use simple file I/O? */
  1100.     BOOLEAN    PerfMeter;        /* Transfer performance meter enabled? */
  1101.  
  1102.     LONG    IOBufferSize;        /* Size of the asynchronous I/O buffer. */
  1103.  
  1104.     BOOLEAN    HideUploadIcon;        /* Hide the upload queue icon? */
  1105.     BOOLEAN    ProtectiveMode;        /* Give hints and ask for confirmation? */
  1106.  
  1107.     BOOLEAN    AlertMode;        /* The user alert mode. */
  1108.  
  1109.     BOOLEAN    RequesterMode;        /* Centre, ignore, use preference? */
  1110.  
  1111.     UWORD    RequesterWidth,        /* Width of asl requesters. */
  1112.         RequesterHeight;    /* Height of asl requesters. */
  1113.     UWORD    RequesterLeft,        /* Left edge of asl requesters. */
  1114.         RequesterTop;        /* Top edge of asl requesters. */
  1115.  
  1116.     UBYTE    WaitString[256];    /* String to send repeatedly while the "Wait" code is running. */
  1117.     LONG    WaitDelay;        /* Time to wait between single commands. */
  1118. };
  1119.  
  1120.     /* Clipboard settings. */
  1121.  
  1122. struct ClipSettings
  1123. {
  1124.     WORD    ClipboardUnit;        /* Clipboard unit to use. */
  1125.  
  1126.     WORD    LineDelay,        /* Insert line delay. */
  1127.         CharDelay;        /* Insert character delay. */
  1128.  
  1129.     UBYTE    InsertPrefix[80];    /* Line insertion prefix. */
  1130.     UBYTE    InsertSuffix[80];    /* Line insertion suffix. */
  1131.  
  1132.     UBYTE    LinePrompt[256];    /* Line wait prompt. */
  1133.     WORD    SendTimeout;        /* Line send timeout. */
  1134.     UBYTE    PacingMode;        /* Text pacing mode. */
  1135.     BOOLEAN    ConvertLF;        /* Convert <LF> characters to <CR> */
  1136. };
  1137.  
  1138.     /* Capture and logfile settings. */
  1139.  
  1140. struct CaptureSettings
  1141. {
  1142.     BOOLEAN    LogActions;                /* Create logfile? */
  1143.     BOOLEAN    LogCall;                /* Create callinfo-compatible logfile? */
  1144.     UBYTE    LogFileName[MAX_FILENAME_LENGTH];    /* Default logfile name. */
  1145.  
  1146.     LONG    MaxBufferSize;                /* Maximum text buffer size. */
  1147.     BOOLEAN    BufferEnabled;                /* Is the text buffer enabled? */
  1148.  
  1149.     BOOLEAN    ConnectAutoCapture;            /* Open capture file on logon? */
  1150.     BOOLEAN    CaptureFilterMode;            /* The capture filter mode. */
  1151.     UBYTE    CapturePath[MAX_FILENAME_LENGTH];    /* The default path for capture files. */
  1152.  
  1153.     UBYTE    CallLogFileName[MAX_FILENAME_LENGTH];    /* Name of the call log file. */
  1154.     UBYTE    BufferPath[MAX_FILENAME_LENGTH];    /* Text buffer save path. */
  1155.  
  1156.     BOOLEAN    AutoCaptureDate;            /* Where to include the creation date? */
  1157.     UBYTE    SearchHistory;
  1158.  
  1159.     BOOLEAN    OpenBufferWindow;            /* Where to open the buffer window. */
  1160.     BOOLEAN    OpenBufferScreen;            /* Where to open the buffer screen. */
  1161.  
  1162.     BOOLEAN    BufferScreenPosition;            /* Where to place the buffer screen (horizontal) */
  1163.     UBYTE    BufferWidth;                /* How long each line in the buffer should be. */
  1164.  
  1165.     BOOLEAN    RememberBufferWindow;            /* Remember buffer window context? */
  1166.     BOOLEAN    RememberBufferScreen;            /* Remember buffer screen context? */
  1167.  
  1168.     ULONG    BufferScreenMode;            /* Screen display mode for buffer screen. */
  1169.  
  1170.     BOOLEAN    ConvertChars;                /* Convert IBM characters? */
  1171.     BOOLEAN    BufferMode;                /* How the capture buffer should receive data. */
  1172. };
  1173.  
  1174.     /* File settings. */
  1175.  
  1176. struct FileSettings
  1177. {
  1178.     UBYTE    ProtocolFileName[MAX_FILENAME_LENGTH];        /* Transfer protocol file name. */
  1179.     UBYTE    TranslationFileName[MAX_FILENAME_LENGTH];    /* Character translation file name. */
  1180.     UBYTE    MacroFileName[MAX_FILENAME_LENGTH];        /* Keyboard macro file name. */
  1181.     UBYTE    CursorFileName[MAX_FILENAME_LENGTH];        /* Cursor key file name. */
  1182.     UBYTE    FastMacroFileName[MAX_FILENAME_LENGTH];        /* Fast macro file name. */
  1183. };
  1184.  
  1185.     /* Emulation settings. */
  1186.  
  1187. struct EmulationSettings
  1188. {
  1189.     BOOLEAN    CursorMode;        /* Are the cursor keys switched to application mode? */
  1190.     BOOLEAN    NumericMode;        /* Is the numeric keypad switched to application mode? */
  1191.  
  1192.     BOOLEAN    CursorWrap;        /* Is cursor position wrapping enabled? */
  1193.     BOOLEAN    LineWrap;        /* Is character line wrapping enabled? */
  1194.  
  1195.     BOOLEAN    InsertMode;        /* Is the character insertion mode enabled? */
  1196.     BOOLEAN    NewLineMode;        /* Is the newline mode enabled? */
  1197.  
  1198.     BOOLEAN    FontScale;        /* Which font scale is enabled? */
  1199.     BOOLEAN    ScrollMode;        /* Is smooth scrolling enabled? */
  1200.     BOOLEAN    DestructiveBackspace;    /* Backspace erases characters? */
  1201.     BOOLEAN    SwapBSDelete;        /* DEL and BS keys are swapped? */
  1202.     BOOLEAN    PrinterEnabled;        /* Printer commands enabled? */
  1203.     BOOLEAN    CLSResetsCursor;    /* Clear screen command resets cursor position? */
  1204.  
  1205.     UBYTE    AnswerBack[80];        /* Answer-back message. */
  1206.  
  1207.     BOOLEAN    KeysLocked;        /* Numeric keypad mode locked? */
  1208.     UBYTE    MaxScroll;        /* Maximum number of lines to prescroll. */
  1209.     UBYTE    MaxJump;        /* Maximum number of lines to scroll in one jump. */
  1210.     BOOLEAN    CursorLocked;        /* Cursor keys locked? */
  1211.     BOOLEAN    FontLocked;        /* Font size locked? */
  1212.     BOOLEAN    LockWrapping;        /* Line wrapping locked? */
  1213.     BOOLEAN    LockStyle;        /* Text style locked? */
  1214.     BOOLEAN    LockColour;        /* Text colour locked? */
  1215.  
  1216.     BOOLEAN    UseStandardPens;    /* Use the standard pens/attributes? */
  1217.     BYTE    TerminalType;        // How to identify ourselves (VT100 or VT200)
  1218.  
  1219.     UBYTE    Attributes[4];        /* Attribute mappings. */
  1220.     UWORD    Pens[16];        /* Rendering pens. */
  1221. };
  1222.  
  1223. struct TransferSignature
  1224. {
  1225.     UBYTE    Signature[40];
  1226.     WORD    Length;
  1227. };
  1228.  
  1229.     /* File transfer library settings. */
  1230.  
  1231. struct TransferSettings
  1232. {
  1233.     UBYTE    DefaultLibrary[MAX_FILENAME_LENGTH],
  1234.         ASCIIUploadLibrary[MAX_FILENAME_LENGTH],
  1235.         ASCIIDownloadLibrary[MAX_FILENAME_LENGTH],
  1236.         TextUploadLibrary[MAX_FILENAME_LENGTH],
  1237.         TextDownloadLibrary[MAX_FILENAME_LENGTH],
  1238.         BinaryUploadLibrary[MAX_FILENAME_LENGTH],
  1239.         BinaryDownloadLibrary[MAX_FILENAME_LENGTH];
  1240.     BOOLEAN    InternalASCIIUpload,
  1241.         InternalASCIIDownload,
  1242.         QuietTransfer,
  1243.         MangleFileNames;
  1244.  
  1245.     WORD    LineDelay,        /* Insert line delay. */
  1246.         CharDelay;        /* Insert character delay. */
  1247.  
  1248.     UBYTE    LinePrompt[256];    /* Line wait prompt. */
  1249.     WORD    SendTimeout;        /* Line send timeout. */
  1250.     UBYTE    PacingMode;        /* Text pacing mode. */
  1251.     BOOLEAN    StripBit8;        /* Strip high order bit. */
  1252.     BOOLEAN    IgnoreDataPastArnold;    /* Ignore data past terminator. */
  1253.     UBYTE    TerminatorChar;        /* Terminator character. */
  1254.     BYTE    SendCR,
  1255.         SendLF,
  1256.         ReceiveCR,
  1257.         ReceiveLF;
  1258.  
  1259.     UWORD    ErrorNotification;    /* Notify user after <n> errors have occured. */
  1260.     BYTE    TransferNotification;    /* Notify the user when a transfer has started/finished? */
  1261.     BYTE    DefaultType,
  1262.         ASCIIDownloadType,
  1263.         ASCIIUploadType,
  1264.         TextDownloadType,
  1265.         TextUploadType,
  1266.         BinaryUploadType,
  1267.         BinaryDownloadType;
  1268.  
  1269.     struct TransferSignature Signatures[TRANSFERSIG_BINARYDOWNLOAD + 1];
  1270.  
  1271.     BOOLEAN    OverridePath;        /* Override the protocol transfer path? */
  1272.     BOOLEAN    SetArchivedBit;        /* Set the archived bit for files sent? */
  1273.     BOOLEAN    IdentifyFiles;        /* Try to identify files after download? */
  1274.     BOOLEAN    TransferIcons;        /* Transfer files along with their icons? */
  1275.     BOOLEAN    PerfMeter;        /* Transfer performance meter enabled? */
  1276.     BOOLEAN    HideUploadIcon;        /* Hide the upload queue icon? */
  1277. };
  1278.  
  1279.     /* The new configuration settings. */
  1280.  
  1281. struct Configuration
  1282. {
  1283.     struct SerialSettings        *SerialConfig;
  1284.     struct ModemSettings        *ModemConfig;
  1285.     struct ScreenSettings        *ScreenConfig;
  1286.     struct TerminalSettings        *TerminalConfig;
  1287.     struct EmulationSettings    *EmulationConfig;
  1288.     struct ClipSettings        *ClipConfig;
  1289.     struct CaptureSettings        *CaptureConfig;
  1290.     struct CommandSettings        *CommandConfig;
  1291.     struct MiscSettings        *MiscConfig;
  1292.     struct PathSettings        *PathConfig;
  1293.     struct FileSettings        *FileConfig;
  1294.     struct TransferSettings        *TransferConfig;
  1295.  
  1296.     STRPTR                TranslationFileName;
  1297.     STRPTR                MacroFileName;
  1298.     STRPTR                CursorFileName;
  1299.     STRPTR                FastMacroFileName;
  1300.  
  1301.     STRPTR                SpeechFileName;
  1302.     STRPTR                SoundFileName;
  1303.     STRPTR                AreaCodeFileName;
  1304.     STRPTR                PhonebookFileName;
  1305.     STRPTR                HotkeyFileName;
  1306.     STRPTR                TrapFileName;
  1307. };
  1308.  
  1309.     /* Phonebook entry header. */
  1310.  
  1311. struct PhoneHeader
  1312. {
  1313.     UBYTE        Name[40],        /* BBS name. */
  1314.             Number[100],        /* Phone number. */
  1315.             Comment[100];        /* Comment. */
  1316.  
  1317.     UBYTE        UserName[100],        /* User name for this BSS. */
  1318.             Password[100];        /* Password for user name. */
  1319.  
  1320.     BOOLEAN        QuickMenu;        /* This entry appears in the quick dial menu? */
  1321.     BOOLEAN        NoRates;        /* Do not use rate information. */
  1322.  
  1323.     ULONG        ID;            /* Unique ID of this entry. */
  1324.  
  1325.     struct timeval    Creation;        /* Creation time. */
  1326.  
  1327.     BOOLEAN        AutoDial;        /* Put this entry on the autodial list. */
  1328.     BYTE        Pad;
  1329. };
  1330.  
  1331.     /* A phonebook entry. */
  1332.  
  1333. struct PhoneEntry
  1334. {
  1335.     struct PhoneNode    *Node;
  1336.  
  1337.     struct MinList         TimeDateList;
  1338.  
  1339.     LONG             Count;
  1340.  
  1341.     struct PhoneGroupNode    *ThisGroup;
  1342.     struct PhoneNode    *NodeGroup;
  1343.  
  1344.     struct PhoneHeader    *Header;
  1345.     struct Configuration    *Config;
  1346. };
  1347.  
  1348.     /* A text box for several lines of text. */
  1349.  
  1350. struct TextBox
  1351. {
  1352.     struct TextBox        *NextBox;        /* Next box in chain. */
  1353.  
  1354.     LONG             Left,Top,        /* Position and size. */
  1355.                  Width,Height;
  1356.  
  1357.     LONG             LineWidth,        /* Line width in pixels. */
  1358.                  LineHeight;        /* Line height in pixels. */
  1359.  
  1360.     LONG             NumChars,        /* Number of chars per line. */
  1361.                  NumLines;        /* Number of lines. */
  1362.  
  1363.     STRPTR            *Title,            /* Line titles. */
  1364.                 *Text;            /* Line texts. */
  1365.  
  1366.     LONG             TitleFgPen,
  1367.                  TitleBgPen,
  1368.                  TextPen;
  1369. };
  1370.  
  1371.     /* Block marker structure. */
  1372.  
  1373. struct BlockMarker
  1374. {
  1375.         /* The object to manipulate. */
  1376.  
  1377.     APTR            Object;
  1378.  
  1379.         /* Selection and unselection routines. */
  1380.  
  1381.     VOID         (* Select)(struct BlockMarker *Marker,LONG Left,LONG Top,LONG Width,LONG Height);
  1382.     VOID         (* Unselect)(struct BlockMarker *Marker,LONG Left,LONG Top,LONG Width,LONG Height);
  1383.  
  1384.         /* Origin anchor point. */
  1385.  
  1386.     LONG            OriginX,
  1387.                 OriginY;
  1388.  
  1389.         /* First and last selected line. */
  1390.  
  1391.     LONG            FirstLine,
  1392.                 LastLine;
  1393.  
  1394.         /* First and last selected column. */
  1395.  
  1396.     LONG            FirstColumn,
  1397.                 LastColumn;
  1398.  
  1399.         /* Top of display window, lines in the buffer and size of
  1400.          * the display window.
  1401.          */
  1402.  
  1403.     LONG            Top,
  1404.                 Lines,
  1405.                 Width,
  1406.                 Height;
  1407.  
  1408.         /* Canvas left and top edge. */
  1409.  
  1410.     LONG            LeftEdge,
  1411.                 TopEdge;
  1412.  
  1413.         /* Last mouse position. */
  1414.  
  1415.     LONG            LastX,
  1416.                 LastY;
  1417.  
  1418.         /* Single character dimensions. */
  1419.  
  1420.     LONG            TextFontWidth,
  1421.                 TextFontHeight;
  1422.  
  1423.         /* Plane write mask. */
  1424.  
  1425.     UBYTE            WriteMask;
  1426. };
  1427.  
  1428.     /* Global data flow <-> term interface. */
  1429.  
  1430. struct FlowInfo
  1431. {
  1432.     BOOLEAN            Changed;
  1433.  
  1434.     BOOLEAN            NoCarrier;
  1435.  
  1436.     BOOLEAN            Connect,
  1437.                 Voice,
  1438.                 Ring,
  1439.                 Busy,
  1440.                 NoDialTone,
  1441.                 Ok,
  1442.                 Error;
  1443.  
  1444.     BOOLEAN            Signature;
  1445. };
  1446.  
  1447.     /* A scan sequence, somewhat similar to the FlowInfo structure. */
  1448.  
  1449. struct WaitNode
  1450. {
  1451.     struct Node    Node;
  1452.     LONG        Count;        /* Number of characters matched. */
  1453.     STRPTR        Response;    /* Immediate response. */
  1454.     LONG        ResponseLen;    /* Length of immediate response string. */
  1455. };
  1456.  
  1457. struct DialNode
  1458. {
  1459.     struct Node         Node;        // List link
  1460.     struct PhoneEntry    *Entry;        // Points to the configuration data
  1461. };
  1462.  
  1463.     /* A list as employed by the ARexx interface. */
  1464.  
  1465. struct GenericList
  1466. {
  1467.     struct MinList         ListHeader;
  1468.     struct Node        *ListNode;
  1469.     LONG             ListCount;
  1470.     struct SignalSemaphore     ListSemaphore;
  1471. };
  1472.  
  1473.     /* Number of buffers to be used for buffered I/O. */
  1474.  
  1475. #define BUFFER_NUMBER        2
  1476.  
  1477.     /* Auxiliary structure for buffered file I/O. */
  1478.  
  1479. struct Buffer
  1480. {
  1481.     struct Message             Message;            /* Vanilla message header. */
  1482.  
  1483.     BOOLEAN                 SimpleIO;            /* Real simple I/O? */
  1484.     BYTE                 Pad;
  1485.  
  1486.     BOOLEAN                 Read;                /* Last access has read data. */
  1487.     BOOLEAN                 Written;            /* Last access has written data. */
  1488.  
  1489.     LONG                 Action;            /* Action to perform. */
  1490.     LONG                 ActionData[2];            /* Seek and the like. */
  1491.     LONG                 Result;            /* Return value. */
  1492.  
  1493.     BPTR                 FileHandle;            /* Dos filehandle. */
  1494.  
  1495.     UBYTE                *Data;                /* Data buffer. */
  1496.     LONG                 BufLength;            /* Length of data buffer. */
  1497.  
  1498.     LONG                 BufPosition;            /* Read/write pointer into buffer. */
  1499.  
  1500.     LONG                 ReadBufFull;            /* How many bytes are still to be read from the buffer? */
  1501.     LONG                 WriteBufFull;            /* How many bytes are still to be written to the buffer?*/
  1502.  
  1503.     LONG                 RealPosition;            /* Real position in file. */
  1504.     LONG                 Cached;            /* How many bytes in pre-load cache. */
  1505.  
  1506.     UBYTE                *DataBuffer[BUFFER_NUMBER];    /* The data buffers. */
  1507.     LONG                 DataLength[BUFFER_NUMBER];    /* The lengths of the data buffers. */
  1508.     WORD                 DataCount;            /* Which buffer to use. */
  1509.     BOOLEAN                 WriteAccess;            /* TRUE if a write file handle. */
  1510.     BOOLEAN                 LastActionFailed;        /* TRUE if last action failed -> abort actions. */
  1511.  
  1512.     struct Process            *Child;
  1513.     struct Process            *Caller;            /* Synchronization. */
  1514.  
  1515.     struct MsgPort            *InfoPort;            /* The filing system the destination file handle is bound to. */
  1516.     struct InfoData __aligned     InfoData;
  1517.  
  1518.     BOOLEAN                 Fresh;                /* TRUE if no read/write access has taken place yet. */
  1519.     BOOLEAN                 Used;                /* Did any access take place at all? */
  1520.  
  1521.     struct DateStamp         OpenDate;            /* Date and time when file was opened. */
  1522. };
  1523.  
  1524.     /* xpr serial bits. */
  1525.  
  1526. #define ST_PARTYON    (1L << 0)
  1527. #define ST_PARTYODD    (1L << 1)
  1528. #define ST_7WIRE    (1L << 2)
  1529. #define ST_QBREAK    (1L << 3)
  1530. #define ST_RADBOOGIE    (1L << 4)
  1531. #define ST_SHARED    (1L << 5)
  1532. #define ST_EOFMODE    (1L << 6)
  1533. #define ST_XDISABLED    (1L << 7)
  1534. #define ST_PARTYMARKON    (1L << 8)
  1535. #define ST_PARTYMARK    (1L << 9)
  1536. #define ST_2BITS    (1L << 10)
  1537. #define ST_READ7    (1L << 11)
  1538. #define ST_WRITE7    (1L << 12)
  1539.  
  1540.     /* Miscellaneous definitions. */
  1541.  
  1542. #define MILLION        1000000
  1543.  
  1544.     /* Raster text line attributes. */
  1545.  
  1546. #define    ATTR_UNDERLINE    1
  1547. #define    ATTR_HIGHLIGHT    2
  1548. #define ATTR_BLINK    4
  1549. #define    ATTR_INVERSE    8
  1550.  
  1551. enum    {    TEXTATTR_UNDERLINE,TEXTATTR_HIGHLIGHT,
  1552.         TEXTATTR_BLINK,TEXTATTR_INVERSE,
  1553.         TEXTATTR_NONE
  1554.     };
  1555.  
  1556.     /* Audio channels. */
  1557.  
  1558. #define LEFT0F  1
  1559. #define RIGHT0F  2
  1560. #define RIGHT1F  4
  1561. #define LEFT1F  8
  1562.  
  1563.     /* Program revision and the appropriate info structure. */
  1564.  
  1565. struct TermInfo
  1566. {
  1567.     UWORD    Version;
  1568.     UWORD    Revision;
  1569. };
  1570.  
  1571. /**********************************************************************/
  1572.  
  1573.  
  1574.     // This defines the destructor data type
  1575.  
  1576. typedef VOID (* __stdargs DESTRUCTOR)(struct MsgItem *);
  1577.  
  1578.     // A message queue handle
  1579.  
  1580. struct MsgQueue
  1581. {
  1582.     struct SignalSemaphore     Access;    // Access semaphore
  1583.     struct MinList         MsgList;    // This is where the queue items go
  1584.  
  1585.     LONG             QueueSize,    // The length of the queue
  1586.                  MaxSize;    // The maximum size of the queue, may be 0
  1587.  
  1588.     struct MinList         WaitList;    // The list of tasks to wait for a wakeup signal
  1589.  
  1590.     struct Task        *SigTask;    // The owner of this handle
  1591.     ULONG             SigMask;    // The signal mask to wake up the owner
  1592.     WORD             SigBit;    // The bit allocated for the mask, may be -1
  1593.  
  1594.     BOOLEAN             Discard;    // Discard or queue new items?
  1595. };
  1596.  
  1597.     // A message item as used by the queue manager
  1598.  
  1599. struct MsgItem
  1600. {
  1601.     struct MinNode         Link;        // List node link
  1602.     DESTRUCTOR         Destructor;    // Destructor routine if any
  1603. };
  1604.  
  1605.     // Your simple message item destructor setup
  1606.  
  1607. #define InitMsgItem(Item,Dest)    (((struct MsgItem *)Item) -> Destructor = (Dest))
  1608.  
  1609.  
  1610. /**********************************************************************/
  1611.  
  1612.  
  1613. enum    {    DATAMSGTYPE_WRITE,DATAMSGTYPE_WRITECLIP,
  1614.         DATAMSGTYPE_UPDATEREVIEW,DATAMSGTYPE_MOVEREVIEW,
  1615.         DATAMSGTYPE_SERIALCOMMAND,DATAMSGTYPE_UPLOAD,
  1616.         DATAMSGTYPE_COMMANDDONE,DATAMSGTYPE_MENU,
  1617.         DATAMSGTYPE_RENDEZVOUS,DATAMSGTYPE_SERIALCOMMANDNOECHO,
  1618.         DATAMSGTYPE_CLEARBUFFER
  1619.     };
  1620.  
  1621.     // An extension of the MsgItem data type
  1622.  
  1623. struct DataMsg
  1624. {
  1625.     struct MsgItem    Item;    // The message item link
  1626.  
  1627.     LONG        Type;    // Message type
  1628.     UBYTE *        Data;    // Pointer to data area
  1629.     LONG        Size;    // Size of data area
  1630.  
  1631.     struct Task *    Client;    // Client task to signal
  1632.     ULONG        Mask;    // Client signal mask
  1633. };
  1634.  
  1635.     // An extension of the DataMsg data type
  1636.  
  1637. struct DataReplyMsg
  1638. {
  1639.     struct DataMsg    Data;        // DataMsg link
  1640.  
  1641.     struct Task *    Creator;    // Creator to notify
  1642.     ULONG        CreatorMask;    // Creator notification signal
  1643. };
  1644.  
  1645.  
  1646. /**********************************************************************/
  1647.  
  1648.  
  1649.     // Serial device attributes
  1650.  
  1651. #define SERA_Baud        TAG_USER+1    // Baud rate
  1652. #define SERA_BreakTime        TAG_USER+2    // Break time
  1653. #define SERA_BitsPerChar    TAG_USER+3    // Bits per character
  1654. #define SERA_StopBits        TAG_USER+4    // Number of stop bits
  1655. #define SERA_BufferSize        TAG_USER+5    // Read/Write buffer size
  1656. #define SERA_Parity        TAG_USER+6    // Parity
  1657. #define SERA_Handshaking    TAG_USER+7    // Handshaking mode
  1658. #define SERA_HighSpeed        TAG_USER+8    // Highspeed mode
  1659. #define SERA_Shared        TAG_USER+9    // Shared access
  1660.  
  1661.  
  1662. /**********************************************************************/
  1663.  
  1664.  
  1665.     /* One of the emulation callback routines. */
  1666.  
  1667. typedef VOID (* EPTR)(STRPTR Buffer);
  1668.  
  1669.     /* This structure describes an ANSI control sequence. */
  1670.  
  1671. struct ControlCode
  1672. {
  1673.     UBYTE    FirstChar;
  1674.     STRPTR    Match,
  1675.         Terminator;
  1676.     UBYTE    LastChar;
  1677.  
  1678.     BYTE    ExactSize;
  1679.     EPTR    Func;
  1680. };
  1681.  
  1682.  
  1683. /**********************************************************************/
  1684.  
  1685.  
  1686.     /* A 96 bit colour entry. */
  1687.  
  1688. typedef struct ColourEntry
  1689. {
  1690.     WORD            One,
  1691.                 Which;
  1692.  
  1693.     ULONG            Red,
  1694.                 Green,
  1695.                 Blue;
  1696. } ColourEntry;
  1697.  
  1698.     /* A table of colour entries, ready for LoadRGB32(). */
  1699.  
  1700. typedef struct ColourTable
  1701. {
  1702.     WORD            NumColours;
  1703.  
  1704.     struct ColourEntry    Entry[0];
  1705.  
  1706.     WORD            Terminator;
  1707. } ColourTable;
  1708.  
  1709.     /* Spread a byte across a long word. */
  1710.  
  1711. #define SPREAD(v)    ((ULONG)(v) << 24 | (ULONG)(v) << 16 | (ULONG)(v) << 8 | (v))
  1712.  
  1713.  
  1714. /**********************************************************************/
  1715.  
  1716.  
  1717.     /* AmigaUW terminal window resize support. */
  1718.  
  1719. #define UWCMD_TTYRESIZE (CMD_NONSTD)+20
  1720.  
  1721.  
  1722. /**********************************************************************/
  1723.  
  1724.  
  1725. typedef struct PhonebookHandle
  1726. {
  1727.     struct PhoneEntry    **Phonebook;
  1728.     LONG             PhoneSize;
  1729.     LONG             NumPhoneEntries;
  1730.     struct MinList        *PhoneGroupList;
  1731.     ULONG             PhonebookID;
  1732.     ULONG             DefaultGroup;
  1733.     UBYTE             PhonePassword[256];
  1734.     BOOLEAN             PhonePasswordUsed;
  1735.     BOOLEAN             AutoDial;
  1736.     BOOLEAN             AutoExit;
  1737. } PhonebookHandle;
  1738.  
  1739. typedef struct PhoneGroupNode
  1740. {
  1741.     struct Node         Node;
  1742.     UBYTE             LocalName[40];
  1743.     struct MinList         GroupList;
  1744. } PhoneGroupNode;
  1745.  
  1746. typedef struct PhonebookGlobals
  1747. {
  1748.     ULONG             Count;            // Number of entries in this phonebook
  1749.     ULONG             ID;            // ID counter for this phonebook
  1750.     ULONG             DefaultGroup;        // Number of the group the phonebook displays when first opened
  1751.     BOOLEAN             AutoDial;        // Start dialing after program is started
  1752.     BOOLEAN             AutoExit;        // Exit program after list is dialed
  1753. } PhonebookGlobals;
  1754.  
  1755. typedef struct PhoneGroupHeader
  1756. {
  1757.     UBYTE             FullName[40];        // Name of this very group
  1758.     LONG             Count;            // Number of entries to follow
  1759.     BYTE             Pad[8];        // For future extension, if necessary
  1760. } PhoneGroupHeader;
  1761.  
  1762.  
  1763. /**********************************************************************/
  1764.  
  1765.  
  1766.     // Window backfill support
  1767.  
  1768. typedef struct LayerMsg
  1769. {
  1770.     ULONG            Layer;
  1771.     struct Rectangle    Bounds;
  1772. } LayerMsg;
  1773.  
  1774.  
  1775. /**********************************************************************/
  1776.  
  1777.  
  1778.     /* Information table entry types. */
  1779.  
  1780. enum    {    INFO_STEM,INFO_TEXT,INFO_NUMERIC,INFO_BOOLEAN,INFO_MAPPED };
  1781.  
  1782.     /* Data types to save or open. */
  1783.  
  1784. enum    {    DATATYPE_TRANSLATIONS,DATATYPE_FUNCTIONKEYS,DATATYPE_CURSORKEYS,
  1785.         DATATYPE_FASTMACROS,DATATYPE_HOTKEYS,DATATYPE_SPEECH,DATATYPE_SOUND,DATATYPE_BUFFER,
  1786.         DATATYPE_CONFIGURATION,DATATYPE_PHONEBOOK,DATATYPE_SCREENTEXT,
  1787.         DATATYPE_SCREENIMAGE,DATATYPE_COUNT };
  1788.  
  1789.     /* Requester types. */
  1790.  
  1791. enum    {    REQUESTER_SERIAL,REQUESTER_MODEM,REQUESTER_SCREEN,
  1792.         REQUESTER_TERMINAL,REQUESTER_EMULATION,REQUESTER_CLIPBOARD,
  1793.         REQUESTER_CAPTURE,REQUESTER_COMMANDS,REQUESTER_MISC,
  1794.         REQUESTER_PATH,REQUESTER_TRANSFER,REQUESTER_TRANSLATIONS,
  1795.         REQUESTER_FUNCTIONKEYS,REQUESTER_CURSORKEYS,REQUESTER_FASTMACROS,
  1796.         REQUESTER_HOTKEYS,REQUESTER_SPEECH,REQUESTER_SOUND,REQUESTER_PHONE,
  1797.         REQUESTER_COUNT };
  1798.  
  1799.     /* Window types. */
  1800.  
  1801. enum    {    WINDOWID_BUFFER,WINDOWID_REVIEW,WINDOWID_PACKET,WINDOWID_FASTMACROS,
  1802.         WINDOWID_STATUS,WINDOWID_MAIN,WINDOWID_UPLOAD_QUEUE,WINDOWID_SINGLE_CHAR_ENTRY,
  1803.         WINDOWID_COUNT
  1804.     };
  1805.  
  1806.     /* The maximum length of an ARexx result variable. */
  1807.  
  1808. #define MAX_RESULT_LEN    65536
  1809.  
  1810.     /* ARexx interface error codes. */
  1811.  
  1812. #define TERMERROR_NO_DATA_TO_PROCESS            1000
  1813. #define TERMERROR_INDEX_OUT_OF_RANGE            1001
  1814. #define TERMERROR_UNKNOWN_OBJECT            1002
  1815. #define TERMERROR_RESULT_VARIABLE_REQUIRED        1003
  1816. #define TERMERROR_UNIT_NOT_AVAILABLE            1004
  1817. #define TERMERROR_DEVICE_DRIVER_STILL_OPEN        1005
  1818. #define TERMERROR_CLIPBOARD_ERROR            1006
  1819. #define TERMERROR_INFORMATION_IS_READ_ONLY        1007
  1820. #define TERMERROR_DATA_TYPES_INCOMPATIBLE        1008
  1821. #define TERMERROR_LIST_IS_ALREADY_EMPTY            1009
  1822. #define TERMERROR_UNKNOWN_LIST                1010
  1823. #define TERMERROR_WRONG_LIST                1011
  1824. #define TERMERROR_UNKNOWN_COMMAND            1012
  1825.  
  1826.     /* An information table entry node. */
  1827.  
  1828. struct AttributeEntry
  1829. {
  1830.     WORD     Level;        /* Node level */
  1831.     STRPTR     Name;        /* Name or NULL for numeric value */
  1832.     UBYTE     Type;        /* Node type (INFO_TEXT through INFO_MAPPED) */
  1833.     BOOLEAN     ReadOnly;    /* If information happens to be read-only */
  1834.     STRPTR    *Mappings;    /* Type mappings if applicable */
  1835.     WORD     NodeID;    /* Node ID code */
  1836. };
  1837.  
  1838.     /* Argument mutual exclusion information. */
  1839.  
  1840. struct ExclusionInfo
  1841. {
  1842.     BYTE    A,B;
  1843. };
  1844.  
  1845.     /* A special message and argument packet. */
  1846.  
  1847. struct RexxPkt
  1848. {
  1849.     struct Message         VanillaMessage;
  1850.  
  1851.     struct RexxMsg        *RexxMsg;
  1852.     STRPTR            *Array;
  1853.     struct RDArgs        *Args;
  1854.     struct CommandInfo    *CommandInfo;
  1855.     LONG             Results[2];
  1856. };
  1857.  
  1858.     /* A special function key pointer. */
  1859.  
  1860. typedef STRPTR (* COMMAND)(struct RexxPkt *);
  1861.  
  1862.     /* Argument inclusion bits. */
  1863.  
  1864. #define INCLUDE_00 (1 <<  0)
  1865. #define INCLUDE_01 (1 <<  1)
  1866. #define INCLUDE_02 (1 <<  2)
  1867. #define INCLUDE_03 (1 <<  3)
  1868. #define INCLUDE_04 (1 <<  4)
  1869. #define INCLUDE_05 (1 <<  5)
  1870. #define INCLUDE_06 (1 <<  6)
  1871. #define INCLUDE_07 (1 <<  7)
  1872. #define INCLUDE_08 (1 <<  8)
  1873. #define INCLUDE_09 (1 <<  9)
  1874. #define INCLUDE_10 (1 << 10)
  1875. #define INCLUDE_11 (1 << 11)
  1876.  
  1877.     /* Rexx command information. */
  1878.  
  1879. struct CommandInfo
  1880. {
  1881.     WORD    Async;
  1882.     BOOLEAN    Tool;
  1883.     BOOLEAN    Console;
  1884.     COMMAND    Routine;
  1885.     STRPTR    Name,
  1886.         Arguments;
  1887. };
  1888.  
  1889.  
  1890. /**********************************************************************/
  1891.  
  1892.  
  1893. enum    {    ATTR_APPLICATION,
  1894.         ATTR_APPLICATION_VERSION,
  1895.         ATTR_APPLICATION_SCREEN,
  1896.         ATTR_APPLICATION_SESSION,
  1897.         ATTR_APPLICATION_SESSION_ONLINE,
  1898.         ATTR_APPLICATION_SESSION_SESSIONSTART,
  1899.         ATTR_APPLICATION_SESSION_BYTESSENT,
  1900.         ATTR_APPLICATION_SESSION_BYTESRECEIVED,
  1901.         ATTR_APPLICATION_SESSION_CONNECTMESSAGE,
  1902.         ATTR_APPLICATION_SESSION_BBSNAME,
  1903.         ATTR_APPLICATION_SESSION_BBSNUMBER,
  1904.         ATTR_APPLICATION_SESSION_BBSCOMMENT,
  1905.         ATTR_APPLICATION_SESSION_USERNAME,
  1906.         ATTR_APPLICATION_SESSION_ONLINEMINUTES,
  1907.         ATTR_APPLICATION_SESSION_ONLINECOST,
  1908.         ATTR_APPLICATION_AREXX,
  1909.         ATTR_APPLICATION_LASTERROR,
  1910.         ATTR_APPLICATION_TERMINAL,
  1911.         ATTR_APPLICATION_TERMINAL_ROWS,
  1912.         ATTR_APPLICATION_TERMINAL_COLUMNS,
  1913.         ATTR_APPLICATION_BUFFER,
  1914.         ATTR_APPLICATION_BUFFER_SIZE,
  1915.         ATTR_PHONEBOOK,
  1916.         ATTR_PHONEBOOK_COUNT,
  1917.         ATTR_PHONEBOOK_X,
  1918.         ATTR_PHONEBOOK_X_NAME,
  1919.         ATTR_PHONEBOOK_X_NUMBER,
  1920.         ATTR_PHONEBOOK_X_COMMENTTEXT,
  1921.         ATTR_PHONEBOOK_X_USERNAME,
  1922.         ATTR_PHONEBOOK_X_PASSWORDTEXT,
  1923.         ATTR_PREFS_SERIAL,
  1924.         ATTR_PREFS_SERIAL_BAUDRATE,
  1925.         ATTR_PREFS_SERIAL_BREAKLENGTH,
  1926.         ATTR_PREFS_SERIAL_BUFFERSIZE,
  1927.         ATTR_PREFS_SERIAL_DEVICENAME,
  1928.         ATTR_PREFS_SERIAL_UNIT,
  1929.         ATTR_PREFS_SERIAL_BITSPERCHAR,
  1930.         ATTR_PREFS_SERIAL_PARITYMODE,
  1931.         ATTR_PREFS_SERIAL_STOPBITS,
  1932.         ATTR_PREFS_SERIAL_HANDSHAKINGMODE,
  1933.         ATTR_PREFS_SERIAL_DUPLEXMODE,
  1934.         ATTR_PREFS_SERIAL_XONXOFF,
  1935.         ATTR_PREFS_SERIAL_HIGHSPEED,
  1936.         ATTR_PREFS_SERIAL_SHARED,
  1937.         ATTR_PREFS_SERIAL_STRIPBIT8,
  1938.         ATTR_PREFS_SERIAL_CARRIERCHECK,
  1939.         ATTR_PREFS_SERIAL_PASSXONXOFFTHROUGH,
  1940.         ATTR_PREFS_SERIAL_QUANTUM,
  1941.         ATTR_PREFS_SERIAL_USE_OWNDEVUNIT,
  1942.         ATTR_PREFS_SERIAL_OWNDEVUNIT_REQUEST,
  1943.         ATTR_PREFS_SERIAL_DIRECT_CONNECTION,
  1944.         ATTR_PREFS_SERIAL_RELEASE_WHEN_ONLINE,
  1945.         ATTR_PREFS_SERIAL_RELEASE_WHEN_DIALING,
  1946.         ATTR_PREFS_SERIAL_NO_ODU_IF_SHARED,
  1947.         ATTR_PREFS_SERIAL_LOCAL_ECHO,
  1948.         ATTR_PREFS_MODEM,
  1949.         ATTR_PREFS_MODEM_MODEMINITTEXT,
  1950.         ATTR_PREFS_MODEM_MODEMEXITTEXT,
  1951.         ATTR_PREFS_MODEM_MODEMHANGUPTEXT,
  1952.         ATTR_PREFS_MODEM_DIALPREFIXTEXT,
  1953.         ATTR_PREFS_MODEM_DIALSUFFIXTEXT,
  1954.         ATTR_PREFS_MODEM_NOCARRIERTEXT,
  1955.         ATTR_PREFS_MODEM_NODIALTONETEXT,
  1956.         ATTR_PREFS_MODEM_CONNECTTEXT,
  1957.         ATTR_PREFS_MODEM_VOICETEXT,
  1958.         ATTR_PREFS_MODEM_RINGTEXT,
  1959.         ATTR_PREFS_MODEM_BUSYTEXT,
  1960.         ATTR_PREFS_MODEM_OKTEXT,
  1961.         ATTR_PREFS_MODEM_ERRORTEXT,
  1962.         ATTR_PREFS_MODEM_REDIALDELAY,
  1963.         ATTR_PREFS_MODEM_DIALRETRIES,
  1964.         ATTR_PREFS_MODEM_DIALTIMEOUT,
  1965.         ATTR_PREFS_MODEM_CONNECTAUTOBAUD,
  1966.         ATTR_PREFS_MODEM_HANGUPDROPSDTR,
  1967.         ATTR_PREFS_MODEM_REDIALAFTERHANGUP,
  1968.         ATTR_PREFS_MODEM_VERBOSEDIALING,
  1969.         ATTR_PREFS_MODEM_NOCARRIERISBUSY,
  1970.         ATTR_PREFS_MODEM_CONNECTLIMIT,
  1971.         ATTR_PREFS_MODEM_CONNECTLIMITMACRO,
  1972.         ATTR_PREFS_MODEM_TIME_TO_CONNECT,
  1973.         ATTR_PREFS_MODEM_DIAL_MODE,
  1974.         ATTR_PREFS_MODEM_INTER_DIAL_DELAY,
  1975.         ATTR_PREFS_MODEM_CHAR_SEND_DELAY,
  1976.         ATTR_PREFS_MODEM_DO_NOT_SEND_COMMANDS,
  1977.         ATTR_PREFS_MODEM_PBX_PREFIX,
  1978.         ATTR_PREFS_MODEM_PBX_MODE,
  1979.         ATTR_PREFS_COMMANDS,
  1980.         ATTR_PREFS_COMMANDS_STARTUPMACROTEXT,
  1981.         ATTR_PREFS_COMMANDS_LOGOFFMACROTEXT,
  1982.         ATTR_PREFS_COMMANDS_UPLOADMACROTEXT,
  1983.         ATTR_PREFS_COMMANDS_DOWNLOADMACROTEXT,
  1984.         ATTR_PREFS_COMMANDS_LOGINMACROTEXT,
  1985.         ATTR_PREFS_SCREEN,
  1986.         ATTR_PREFS_SCREEN_WINDOW_BORDER,
  1987.         ATTR_PREFS_SCREEN_SPLIT_STATUS,
  1988.         ATTR_PREFS_SCREEN_COLOURMODE,
  1989.         ATTR_PREFS_SCREEN_FONTNAME,
  1990.         ATTR_PREFS_SCREEN_FONTSIZE,
  1991.         ATTR_PREFS_SCREEN_MAKESCREENPUBLIC,
  1992.         ATTR_PREFS_SCREEN_SHANGHAIWINDOWS,
  1993.         ATTR_PREFS_SCREEN_BLINKING,
  1994.         ATTR_PREFS_SCREEN_FASTERLAYOUT,
  1995.         ATTR_PREFS_SCREEN_TITLEBAR,
  1996.         ATTR_PREFS_SCREEN_STATUSLINEMODE,
  1997.         ATTR_PREFS_SCREEN_USEWORKBENCH,
  1998.         ATTR_PREFS_SCREEN_PUBSCREENNAME,
  1999.         ATTR_PREFS_SCREEN_ONLINEDISPLAY,
  2000.         ATTR_PREFS_SCREEN_USEPENS,
  2001.         ATTR_PREFS_TERMINAL,
  2002.         ATTR_PREFS_TERMINAL_BELLMODE,
  2003.         ATTR_PREFS_TERMINAL_EMULATIONMODE,
  2004.         ATTR_PREFS_TERMINAL_FONTMODE,
  2005.         ATTR_PREFS_TERMINAL_SENDCRMODE,
  2006.         ATTR_PREFS_TERMINAL_SENDLFMODE,
  2007.         ATTR_PREFS_TERMINAL_RECEIVECRMODE,
  2008.         ATTR_PREFS_TERMINAL_RECEIVELFMODE,
  2009.         ATTR_PREFS_TERMINAL_NUMCOLUMNS,
  2010.         ATTR_PREFS_TERMINAL_NUMLINES,
  2011.         ATTR_PREFS_TERMINAL_KEYMAPNAME,
  2012.         ATTR_PREFS_TERMINAL_EMULATIONNAME,
  2013.         ATTR_PREFS_TERMINAL_FONTNAME,
  2014.         ATTR_PREFS_TERMINAL_FONTSIZE,
  2015.         ATTR_PREFS_TERMINAL_USETERMINALPROCESS,
  2016.         ATTR_PREFS_TERMINAL_AUTOSIZE,
  2017.         ATTR_PREFS_PATHS,
  2018.         ATTR_PREFS_PATHS_ASCIIUPLOADPATH,
  2019.         ATTR_PREFS_PATHS_ASCIIDOWNLOADPATH,
  2020.         ATTR_PREFS_PATHS_TEXTUPLOADPATH,
  2021.         ATTR_PREFS_PATHS_TEXTDOWNLOADPATH,
  2022.         ATTR_PREFS_PATHS_BINARYUPLOADPATH,
  2023.         ATTR_PREFS_PATHS_BINARYDOWNLOADPATH,
  2024.         ATTR_PREFS_PATHS_CONFIGPATH,
  2025.         ATTR_PREFS_PATHS_EDITORNAME,
  2026.         ATTR_PREFS_PATHS_HELPFILENAME,
  2027.         ATTR_PREFS_MISC,
  2028.         ATTR_PREFS_MISC_PRIORITY,
  2029.         ATTR_PREFS_MISC_BACKUPCONFIG,
  2030.         ATTR_PREFS_MISC_OPENFASTMACROPANEL,
  2031.         ATTR_PREFS_MISC_RELEASEDEVICE,
  2032.         ATTR_PREFS_MISC_OVERRIDEPATH,
  2033.         ATTR_PREFS_MISC_AUTOUPLOAD,
  2034.         ATTR_PREFS_MISC_SETARCHIVEDBIT,
  2035.         ATTR_PREFS_MISC_COMMENTMODE,
  2036.         ATTR_PREFS_MISC_TRANSFERICONS,
  2037.         ATTR_PREFS_MISC_CREATEICONS,
  2038.         ATTR_PREFS_MISC_SIMPLEIO,
  2039.         ATTR_PREFS_MISC_TRANSFER_PERFMETER,
  2040.         ATTR_PREFS_MISC_IOBUFFERSIZE,
  2041.         ATTR_PREFS_MISC_HIDE_UPLOAD_ICON,
  2042.         ATTR_PREFS_MISC_OVERWRITE_WARNING,
  2043.         ATTR_PREFS_MISC_ALERTMODE,
  2044.         ATTR_PREFS_MISC_REQUESTERMODE,
  2045.         ATTR_PREFS_MISC_REQUESTERWIDTH,
  2046.         ATTR_PREFS_MISC_REQUESTERHEIGHT,
  2047.         ATTR_PREFS_MISC_WAITSTRING,
  2048.         ATTR_PREFS_MISC_WAITDELAY,
  2049.         ATTR_PREFS_CLIPBOARD,
  2050.         ATTR_PREFS_CLIPBOARD_UNIT,
  2051.         ATTR_PREFS_CLIPBOARD_LINEDELAY,
  2052.         ATTR_PREFS_CLIPBOARD_CHARDELAY,
  2053.         ATTR_PREFS_CLIPBOARD_INSERTPREFIXTEXT,
  2054.         ATTR_PREFS_CLIPBOARD_INSERTSUFFIXTEXT,
  2055.         ATTR_PREFS_CLIPBOARD_TEXTPACING,
  2056.         ATTR_PREFS_CLIPBOARD_LINEPROMPT,
  2057.         ATTR_PREFS_CLIPBOARD_SENDTIMEOUT,
  2058.         ATTR_PREFS_CLIPBOARD_CONVERTLF,
  2059.         ATTR_PREFS_CAPTURE,
  2060.         ATTR_PREFS_CAPTURE_LOGACTIONS,
  2061.         ATTR_PREFS_CAPTURE_LOGCALLS,
  2062.         ATTR_PREFS_CAPTURE_LOGFILENAME,
  2063.         ATTR_PREFS_CAPTURE_MAXBUFFERSIZE,
  2064.         ATTR_PREFS_CAPTURE_BUFFER,
  2065.         ATTR_PREFS_CAPTURE_CONNECTAUTOCAPTURE,
  2066.         ATTR_PREFS_CAPTURE_AUTOCAPTUREDATE,
  2067.         ATTR_PREFS_CAPTURE_CAPTUREFILTER,
  2068.         ATTR_PREFS_CAPTURE_CAPTUREPATH,
  2069.         ATTR_PREFS_CAPTURE_CALLLOGFILENAME,
  2070.         ATTR_PREFS_CAPTURE_BUFFERSAVEPATH,
  2071.         ATTR_PREFS_CAPTURE_OPENBUFFERWINDOW,
  2072.         ATTR_PREFS_CAPTURE_OPENBUFFERSCREEN,
  2073.         ATTR_PREFS_CAPTURE_BUFFERSCREENPOSITION,
  2074.         ATTR_PREFS_CAPTURE_BUFFERWIDTH,
  2075.         ATTR_PREFS_CAPTURE_REMEMBER_BUFFERWINDOW,
  2076.         ATTR_PREFS_CAPTURE_REMEMBER_BUFFERSCREEN,
  2077.         ATTR_PREFS_CAPTURE_SEARCH_HISTORY,
  2078.         ATTR_PREFS_CAPTURE_CONVERTCHARACTERS,
  2079.         ATTR_PREFS_CAPTURE_BUFFERMODE,
  2080.         ATTR_PREFS_FILE,
  2081.         ATTR_PREFS_FILE_TRANSFERPROTOCOLNAME,
  2082.         ATTR_PREFS_FILE_TRANSLATIONFILENAME,
  2083.         ATTR_PREFS_FILE_MACROFILENAME,
  2084.         ATTR_PREFS_FILE_CURSORFILENAME,
  2085.         ATTR_PREFS_FILE_FASTMACROFILENAME,
  2086.         ATTR_PREFS_EMULATION,
  2087.         ATTR_PREFS_EMULATION_IDENTIFICATION,
  2088.         ATTR_PREFS_EMULATION_CURSORMODE,
  2089.         ATTR_PREFS_EMULATION_NUMERICMODE,
  2090.         ATTR_PREFS_EMULATION_CURSORWRAP,
  2091.         ATTR_PREFS_EMULATION_LINEWRAP,
  2092.         ATTR_PREFS_EMULATION_INSERTMODE,
  2093.         ATTR_PREFS_EMULATION_NEWLINEMODE,
  2094.         ATTR_PREFS_EMULATION_FONTSCALEMODE,
  2095.         ATTR_PREFS_EMULATION_SCROLLMODE,
  2096.         ATTR_PREFS_EMULATION_DESTRUCTIVEBACKSPACE,
  2097.         ATTR_PREFS_EMULATION_SWAPBSDELETE,
  2098.         ATTR_PREFS_EMULATION_CURSORLOCKED,
  2099.         ATTR_PREFS_EMULATION_FONTLOCKED,
  2100.         ATTR_PREFS_EMULATION_NUMPADLOCKED,
  2101.         ATTR_PREFS_EMULATION_PRINTERENABLED,
  2102.         ATTR_PREFS_EMULATION_ANSWERBACKTEXT,
  2103.         ATTR_PREFS_EMULATION_CLS_RESETS_CURSOR,
  2104.         ATTR_PREFS_EMULATION_MAXSCROLL,
  2105.         ATTR_PREFS_EMULATION_MAXJUMP,
  2106.         ATTR_PREFS_EMULATION_WRAPLOCKED,
  2107.         ATTR_PREFS_EMULATION_STYLELOCKED,
  2108.         ATTR_PREFS_EMULATION_COLOURLOCKED,
  2109.         ATTR_PREFS_EMULATION_USEPENS,
  2110.         ATTR_PREFS_TRANSFER,
  2111.         ATTR_PREFS_TRANSFER_DEFAULT_LIBRARY,
  2112.         ATTR_PREFS_TRANSFER_ASCII_UPLOAD_LIBRARY,
  2113.         ATTR_PREFS_TRANSFER_INTERNAL_ASCII_UPLOAD,
  2114.         ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_LIBRARY,
  2115.         ATTR_PREFS_TRANSFER_INTERNAL_ASCII_DOWNLOAD,
  2116.         ATTR_PREFS_TRANSFER_QUIET_TRANSFER,
  2117.         ATTR_PREFS_TRANSFER_TEXT_UPLOAD_LIBRARY,
  2118.         ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_LIBRARY,
  2119.         ATTR_PREFS_TRANSFER_BINARY_UPLOAD_LIBRARY,
  2120.         ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_LIBRARY,
  2121.         ATTR_PREFS_TRANSFER_MANGLE_FILE_NAMES,
  2122.         ATTR_PREFS_TRANSFER_LINEDELAY,
  2123.         ATTR_PREFS_TRANSFER_CHARDELAY,
  2124.         ATTR_PREFS_TRANSFER_TEXTPACING,
  2125.         ATTR_PREFS_TRANSFER_LINEPROMPT,
  2126.         ATTR_PREFS_TRANSFER_SENDTIMEOUT,
  2127.         ATTR_PREFS_TRANSFER_STRIP_BIT_8,
  2128.         ATTR_PREFS_TRANSFER_IGNORE_DATA_PAST_ARNOLD,
  2129.         ATTR_PREFS_TRANSFER_TERMINATOR_CHAR,
  2130.         ATTR_PREFS_TRANSFER_ERROR_NOTIFY_COUNT,
  2131.         ATTR_PREFS_TRANSFER_ERROR_NOTIFY_WHEN,
  2132.         ATTR_PREFS_TRANSFER_OVERRIDEPATH,
  2133.         ATTR_PREFS_TRANSFER_SETARCHIVEDBIT,
  2134.         ATTR_PREFS_TRANSFER_COMMENTMODE,
  2135.         ATTR_PREFS_TRANSFER_TRANSFERICONS,
  2136.         ATTR_PREFS_TRANSFER_TRANSFER_PERFMETER,
  2137.         ATTR_PREFS_TRANSFER_HIDE_UPLOAD_ICON,
  2138.         ATTR_PREFS_TRANSFER_DEFAULT_TYPE,
  2139.         ATTR_PREFS_TRANSFER_DEFAULT_SEND_SIGNATURE,
  2140.         ATTR_PREFS_TRANSFER_DEFAULT_RECEIVE_SIGNATURE,
  2141.         ATTR_PREFS_TRANSFER_ASCII_UPLOAD_TYPE,
  2142.         ATTR_PREFS_TRANSFER_ASCII_UPLOAD_SIGNATURE,
  2143.         ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_TYPE,
  2144.         ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_SIGNATURE,
  2145.         ATTR_PREFS_TRANSFER_TEXT_UPLOAD_TYPE,
  2146.         ATTR_PREFS_TRANSFER_TEXT_UPLOAD_SIGNATURE,
  2147.         ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_TYPE,
  2148.         ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_SIGNATURE,
  2149.         ATTR_PREFS_TRANSFER_BINARY_UPLOAD_TYPE,
  2150.         ATTR_PREFS_TRANSFER_BINARY_UPLOAD_SIGNATURE,
  2151.         ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_TYPE,
  2152.         ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_SIGNATURE,
  2153.         ATTR_PREFS_SPEECH,
  2154.         ATTR_PREFS_SPEECH_RATE,
  2155.         ATTR_PREFS_SPEECH_PITCH,
  2156.         ATTR_PREFS_SPEECH_FREQUENCY,
  2157.         ATTR_PREFS_SPEECH_SEXMODE,
  2158.         ATTR_PREFS_SPEECH_VOLUME,
  2159.         ATTR_PREFS_SPEECH_SPEECH,
  2160.         ATTR_PREFS_TRANSLATIONS,
  2161.         ATTR_PREFS_TRANSLATIONS_X,
  2162.         ATTR_PREFS_TRANSLATIONS_X_SEND,
  2163.         ATTR_PREFS_TRANSLATIONS_X_RECEIVE,
  2164.         ATTR_PREFS_FASTMACROS,
  2165.         ATTR_PREFS_FASTMACROS_COUNT,
  2166.         ATTR_PREFS_FASTMACROS_X,
  2167.         ATTR_PREFS_FASTMACROS_X_NAME,
  2168.         ATTR_PREFS_FASTMACROS_X_CODE,
  2169.         ATTR_PREFS_HOTKEYS,
  2170.         ATTR_PREFS_HOTKEYS_TERMSCREENTOFRONTTEXT,
  2171.         ATTR_PREFS_HOTKEYS_BUFFERSCREENTOFRONTTEXT,
  2172.         ATTR_PREFS_HOTKEYS_SKIPDIALENTRYTEXT,
  2173.         ATTR_PREFS_HOTKEYS_ABORTAREXX,
  2174.         ATTR_PREFS_HOTKEYS_COMMODITYPRIORITY,
  2175.         ATTR_PREFS_HOTKEYS_HOTKEYSENABLED,
  2176.         ATTR_PREFS_CURSORKEYS,
  2177.         ATTR_PREFS_CURSORKEYS_UPTEXT,
  2178.         ATTR_PREFS_CURSORKEYS_RIGHTTEXT,
  2179.         ATTR_PREFS_CURSORKEYS_DOWNTEXT,
  2180.         ATTR_PREFS_CURSORKEYS_LEFTTEXT,
  2181.         ATTR_PREFS_CURSORKEYS_SHIFT,
  2182.         ATTR_PREFS_CURSORKEYS_SHIFT_UPTEXT,
  2183.         ATTR_PREFS_CURSORKEYS_SHIFT_RIGHTTEXT,
  2184.         ATTR_PREFS_CURSORKEYS_SHIFT_DOWNTEXT,
  2185.         ATTR_PREFS_CURSORKEYS_SHIFT_LEFTTEXT,
  2186.         ATTR_PREFS_CURSORKEYS_ALT,
  2187.         ATTR_PREFS_CURSORKEYS_ALT_UPTEXT,
  2188.         ATTR_PREFS_CURSORKEYS_ALT_RIGHTTEXT,
  2189.         ATTR_PREFS_CURSORKEYS_ALT_DOWNTEXT,
  2190.         ATTR_PREFS_CURSORKEYS_ALT_LEFTTEXT,
  2191.         ATTR_PREFS_CURSORKEYS_CONTROL,
  2192.         ATTR_PREFS_CURSORKEYS_CONTROL_UPTEXT,
  2193.         ATTR_PREFS_CURSORKEYS_CONTROL_RIGHTTEXT,
  2194.         ATTR_PREFS_CURSORKEYS_CONTROL_DOWNTEXT,
  2195.         ATTR_PREFS_CURSORKEYS_CONTROL_LEFTTEXT,
  2196.         ATTR_PREFS_FUNCTIONKEYS,
  2197.         ATTR_PREFS_FUNCTIONKEYS_X,
  2198.         ATTR_PREFS_FUNCTIONKEYS_SHIFT,
  2199.         ATTR_PREFS_FUNCTIONKEYS_SHIFT_X,
  2200.         ATTR_PREFS_FUNCTIONKEYS_ALT,
  2201.         ATTR_PREFS_FUNCTIONKEYS_ALT_X,
  2202.         ATTR_PREFS_FUNCTIONKEYS_CONTROL,
  2203.         ATTR_PREFS_FUNCTIONKEYS_CONTROL_X,
  2204.         ATTR_PREFS_PROTOCOL,
  2205.         ATTR_PREFS_CONSOLE,
  2206.         ATTR_PREFS_SOUND,
  2207.         ATTR_PREFS_SOUND_BELLNAME,
  2208.         ATTR_PREFS_SOUND_CONNECTNAME,
  2209.         ATTR_PREFS_SOUND_DISCONNECTNAME,
  2210.         ATTR_PREFS_SOUND_GOODTRANSFERNAME,
  2211.         ATTR_PREFS_SOUND_BADTRANSFERNAME,
  2212.         ATTR_PREFS_SOUND_RINGNAME,
  2213.         ATTR_PREFS_SOUND_VOICENAME,
  2214.         ATTR_PREFS_SOUND_PRELOAD,
  2215.         ATTR_PREFS_SOUND_ERROR,
  2216.         ATTR_PREFS_SOUND_VOLUME
  2217.     };
  2218.  
  2219.  
  2220. /**********************************************************************/
  2221.  
  2222.  
  2223.     /* How many characters we will keep in the scan buffer. */
  2224.  
  2225. #define MAX_SCAN_SIZE    255
  2226.  
  2227. typedef struct ParseContext
  2228. {
  2229.     STRPTR    pc_Arnie;
  2230.     WORD    pc_CharsInBuffer,
  2231.         pc_ScanStep;
  2232.     UBYTE    pc_SaveBuffer[MAX_SCAN_SIZE + 1];
  2233.  
  2234.     UBYTE    pc_LineBuffer[BUFFER_LINE_MAX + 1];
  2235.     WORD    pc_LineLen,
  2236.         pc_LineIndex;
  2237.  
  2238.     BOOLEAN    pc_InSequence;
  2239. } ParseContext;
  2240.  
  2241.  
  2242. /**********************************************************************/
  2243.  
  2244.  
  2245.     /* And now for something completely different... */
  2246.  
  2247. #ifndef _PROTOS_H
  2248. #include "Protos.h"
  2249. #endif
  2250.  
  2251. #ifndef _DATA_H
  2252. #include "Data.h"
  2253. #endif
  2254.  
  2255. #ifndef _ERRORS_H
  2256. #include "Errors.h"
  2257. #endif
  2258.  
  2259. #endif    // _GLOBAL_H
  2260.